[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 3/5] xen/livepatch/ARM32: Don't load and crash on livepatches loaded with wrong alignment.
On Tue, Sep 12, 2017 at 02:57:04AM -0600, Jan Beulich wrote: > >>> On 12.09.17 at 02:22, <konrad@xxxxxxxxxx> wrote: > > On Mon, Sep 11, 2017 at 03:01:15AM -0600, Jan Beulich wrote: > >> Hmm, as long as the relocation isn't required to be against aligned > >> fields only (mandated by the processor ABI) I think the code doing > >> the relocations would instead need to split the access, rather than > >> calling the section misaligned or increasing alignment beyond what > >> the ELF section headers say. > > > > Maybe the serial log would explain this better: > > > > xend_config_format : 4 > > Executing: '(set -e;cd /root/test/livepatch;xen-livepatch load > > xen_bye_world.livepatch)' ..(XEN) livepatch.c:413: livepatch: > > xen_bye_world: Loaded .note.gnu.build-id at 00a08000 > > (XEN) livepatch.c:413: livepatch: xen_bye_world: Loaded .text at 00a06000 > > (XEN) livepatch.c:413: livepatch: xen_bye_world: Loaded .rodata at 00a08024 > > (XEN) livepatch.c:413: livepatch: xen_bye_world: Loaded .rodata.str1.4 at > > 00a08038 > > (XEN) livepatch.c:413: livepatch: xen_bye_world: Loaded .livepatch.depends > > at 00a08043 > >[...] > > Keep in mind that this only happens if I cross-compile ARM32 under x86. > > That would suggest a build environment / build tools issue then: > Cross builds aren't supposed to produce binaries different from > native builds. Hm, the gcc parameters on both native and cross compiler have same args: konrad@osstest:/srv/cubietruck/source$ diff native.invocation /tmp/cross.invocation 1c1 < gcc -marm -DBUILD_ID -fno-strict-aliasing -std=gnu99 -Wall -Wstrict-prototypes -Wdeclaration-after-statement -Wno-unused-but-set-variable -Wno-unused-local-typedefs -O1 -nostdinc -fno-builtin -fno-common -Werror -Wredundant-decls -Wno-pointer-arith -pipe -g -D__XEN__ -include /source/xen.orig.git/xen/include/xen/config.h '-D__OBJECT_FILE__="xen_bye_world.o"' -Wa,--strip-local-absolute -fno-omit-frame-pointer -MMD -MF ./.xen_bye_world.o.d -msoft-float -mcpu=cortex-a15 -I/source/xen.orig.git/xen/include -fno-stack-protector -fno-exceptions -Wnested-externs -DGCC_HAS_VISIBILITY_ATTRIBUTE -marm -DBUILD_ID -fno-strict-aliasing -std=gnu99 -Wall -Wstrict-prototypes -Wdeclaration-after-statement -Wno-unused-but-set-variable -Wno-unused-local-typedefs -c xen_bye_world.c -o xen_bye_world.o --- > arm-linux-gnu-gcc -marm -DBUILD_ID -fno-strict-aliasing -std=gnu99 -Wall > -Wstrict-prototypes -Wdeclaration-after-statement > -Wno-unused-but-set-variable -Wno-unused-local-typedefs -O1 -nostdinc > -fno-builtin -fno-common -Werror -Wredundant-decls -Wno-pointer-arith -pipe > -g -D__XEN__ -include /home/konrad/A20/xen.git/xen/include/xen/config.h > '-D__OBJECT_FILE__="xen_bye_world.o"' -Wa,--strip-local-absolute > -fno-omit-frame-pointer -MMD -MF ./.xen_bye_world.o.d -msoft-float > -mcpu=cortex-a15 -I/home/konrad/A20/xen.git/xen/include -fno-stack-protector > -fno-exceptions -Wnested-externs -DGCC_HAS_VISIBILITY_ATTRIBUTE -marm > -DBUILD_ID -fno-strict-aliasing -std=gnu99 -Wall -Wstrict-prototypes > -Wdeclaration-after-statement -Wno-unused-but-set-variable > -Wno-unused-local-typedefs -c xen_bye_world.c -o xen_bye_world.o > > > If I compile the test-case under ARM32 it works OK (as the > > .livepatch.depends ends up being aligned to four bytes). > > So why is that? What entity is creating this section (or the > directive(s) to create it)? gcc Looking at the xen_bye_world.o produced by cross-compiler: xen_bye_world.o: file format elf32-littlearm Contents of section .rodata: 0000 78656e5f 65787472 615f7665 7273696f xen_extra_versio 0010 6e00 n. And native: xen_bye_world.o: file format elf32-littlearm Contents of section .rodata: 0000 78656e5f 65787472 615f7665 7273696f xen_extra_versio 0010 6e000000 n... (The cross compiler is 7.0.1, while native is 4.9.2). _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |