Build failure with "-mfunction-return=thunk -mindirect-branch=thunk" flags due to elf hack: malloc(): corrupted top size
Categories
(Firefox Build System :: General, defect)
Tracking
(firefox68 fixed)
| Tracking | Status | |
|---|---|---|
| firefox68 | --- | fixed |
People
(Reporter: Arfrever.FTA, Assigned: froydnj)
Details
Attachments
(6 files)
|
47.99 KB,
application/octet-stream
|
Details | |
|
48.20 KB,
application/octet-stream
|
Details | |
|
144.17 KB,
application/octet-stream
|
Details | |
|
47 bytes,
text/x-phabricator-request
|
pascalc
:
approval-mozilla-beta-
|
Details | Review |
|
4.50 KB,
application/octet-stream
|
Details | |
|
47 bytes,
text/x-phabricator-request
|
pascalc
:
approval-mozilla-beta-
|
Details | Review |
User Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Falkon/3.0.99 Chrome/69.0.3497.128 Safari/537.36
Steps to reproduce:
Firefox failed to build due to elf hack.
Problem reproduced with Firefox 66.0.2, but earlier versions most likely also affected.
Build environment:
Gentoo GNU/Linux
x86_64 architecture
glibc 2.29
GCC 8.3.0
GNU Binutils 2.32
Rust 1.33.0
CFLAGS="-march=native -O2 -fno-ident -frecord-gcc-switches -fstack-clash-protection -fstack-protector-all -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register -pipe -Wall -Wpointer-sign"
CXXFLAGS="-march=native -O2 -fno-ident -frecord-gcc-switches -fstack-clash-protection -fstack-protector-all -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register -pipe -Wall -Werror=terminate"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--defsym=gentoo_check_ldflags=0 -Wl,--gc-sections -Wl,--sort-common -Wl,-z,now"
Actual results:
522:48.11 gmake[4]: Entering directory '/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/ff/build/unix/elfhack'
522:48.11 /usr/bin/x86_64-pc-linux-gnu-g++ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -Wall -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wwrite-strings -Wno-invalid-offsetof -Wc++1z-compat -Wduplicated-cond -Wimplicit-fallthrough -Wno-error=maybe-uninitialized -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=multistatement-macros -Wno-error=class-memaccess -Wformat -Wformat-security -Wformat-overflow=2 -fno-sized-deallocation -march=native -fno-ident -frecord-gcc-switches -fstack-clash-protection -fstack-protector-all -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register -pipe -Wall -Werror=terminate -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-schedule-insns -fno-schedule-insns2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-aliasing -fno-rtti -ffunction-sections -fdata-sections -fno-math-errno -pthread -pipe -fexceptions -freorder-blocks -O2 -fomit-frame-pointer -funwind-tables -fPIC -shared -Wl,-z,defs -Wl,--gc-sections -Wl,-h,test-ctors.so -o test-ctors.so -lpthread -Wl,-O1 -Wl,--as-needed -Wl,--defsym=gentoo_check_ldflags=0 -Wl,--gc-sections -Wl,--sort-common -Wl,-z,now -Wl,-rpath=/usr/lib64/firefox,--enable-new-dtags -Wl,--compress-debug-sections=zlib -fuse-ld=bfd -Wl,-z,noexecstack -Wl,-z,text -Wl,-z,relro -Wl,-z,nocopyreloc -Wl,-Bsymbolic-functions -Wl,-rpath-link,/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/ff/dist/bin -Wl,-rpath-link,/usr/lib -fdiagnostics-color test-ctors.o -nostartfiles
522:48.12 ===
522:48.13 === If you get failures below, please file a bug describing the error
522:48.13 === and your environment (compiler and linker versions), and
522:48.13 === provide the pre-elfhacked library as an attachment.
522:48.13 === Use --disable-elf-hack until this is fixed.
522:48.16 ===
522:48.16 # Fail if the library doesn't have INIT .dynamic info
522:48.17 readelf -d test-ctors.so | grep '(INIT)'
522:48.17 0x000000000000000c (INIT) 0x5000
522:48.18 /var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/ff/build/unix/elfhack/elfhack -b -f test-ctors.so
522:48.18 test-ctors.so: malloc(): corrupted top size
522:48.18 gmake[4]: *** [Makefile:28: test-ctors.so] Aborted (core dumped)
522:48.18 gmake[4]: Leaving directory '/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/ff/build/unix/elfhack'
522:48.18 gmake[4]: *** Waiting for unfinished jobs....
522:48.18 gmake[4]: Entering directory '/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/ff/build/unix/elfhack'
522:48.19 /usr/bin/x86_64-pc-linux-gnu-g++ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -Wall -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wwrite-strings -Wno-invalid-offsetof -Wc++1z-compat -Wduplicated-cond -Wimplicit-fallthrough -Wno-error=maybe-uninitialized -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=multistatement-macros -Wno-error=class-memaccess -Wformat -Wformat-security -Wformat-overflow=2 -fno-sized-deallocation -march=native -fno-ident -frecord-gcc-switches -fstack-clash-protection -fstack-protector-all -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register -pipe -Wall -Werror=terminate -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-schedule-insns -fno-schedule-insns2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-aliasing -fno-rtti -ffunction-sections -fdata-sections -fno-math-errno -pthread -pipe -fexceptions -freorder-blocks -O2 -fomit-frame-pointer -funwind-tables -fPIC -shared -Wl,-z,defs -Wl,--gc-sections -Wl,-h,test-array.so -o test-array.so -lpthread -Wl,-O1 -Wl,--as-needed -Wl,--defsym=gentoo_check_ldflags=0 -Wl,--gc-sections -Wl,--sort-common -Wl,-z,now -Wl,-rpath=/usr/lib64/firefox,--enable-new-dtags -Wl,--compress-debug-sections=zlib -fuse-ld=bfd -Wl,-z,noexecstack -Wl,-z,text -Wl,-z,relro -Wl,-z,nocopyreloc -Wl,-Bsymbolic-functions -Wl,-rpath-link,/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/ff/dist/bin -Wl,-rpath-link,/usr/lib -fdiagnostics-color test-array.o -nostartfiles
522:48.19 ===
522:48.19 === If you get failures below, please file a bug describing the error
522:48.20 === and your environment (compiler and linker versions), and
522:48.20 === provide the pre-elfhacked library as an attachment.
522:48.20 === Use --disable-elf-hack until this is fixed.
522:48.20 ===
522:48.21 # Fail if the library doesn't have INIT_ARRAY .dynamic info
522:48.21 readelf -d test-array.so | grep '(INIT_ARRAY)'
522:48.21 0x0000000000000019 (INIT_ARRAY) 0x9de0
522:48.21 /var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/ff/build/unix/elfhack/elfhack -b -f test-array.so
522:48.22 test-array.so: malloc(): corrupted top size
522:48.22 gmake[4]: *** [Makefile:28: test-array.so] Aborted (core dumped)
522:48.22 gmake[4]: Leaving directory '/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/ff/build/unix/elfhack'
522:48.23 gmake[3]: *** [/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/config/recurse.mk:101: build/unix/elfhack/libs] Error 2
522:48.23 gmake[2]: *** [/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/config/recurse.mk:34: libs] Error 2
522:48.23 gmake[1]: *** [/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/config/rules.mk:415: default] Error 2
522:48.93 gmake: *** [client.mk:125: build] Error 2
522:51.67 10 compiler warnings present.
| Reporter | ||
Comment 1•7 years ago
|
||
| Reporter | ||
Comment 2•7 years ago
|
||
| Reporter | ||
Comment 3•7 years ago
|
||
(test-array.so and test-ctors.so are empty files.)
Updated•7 years ago
|
| Reporter | ||
Comment 4•7 years ago
|
||
Using of -mfunction-return=thunk -mindirect-branch=thunk flags in CFLAGS / CXXFLAGS is required to reproduce this bug.
These flags are used for mitigation of Spectre vulnerability (variant 2).
Summary of available flags for mitigation of Spectre vulnerability (variant 2):
GCC (firstly released in 8, later backported to 7.3, 6.5): -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register
Clang (>=7): -mretpoline
| Reporter | ||
Updated•7 years ago
|
| Assignee | ||
Updated•7 years ago
|
| Assignee | ||
Comment 5•7 years ago
|
||
I can elfhack the provided files with an elfhack built locally. Can you provide information on how elfhack gets built for you? (Compiler commands, linker commands, etc.)
| Reporter | ||
Comment 6•7 years ago
|
||
That part of Firefox build system ignores user-provided CFLAGS, CXXFLAGS and LDFLAGS:
gmake[4]: Entering directory '/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack'
build/unix/elfhack/host_elfhack.o
/usr/bin/x86_64-pc-linux-gnu-g++ -o host_elfhack.o -c -freorder-blocks -O2 -DNDEBUG=1 -DTRIMMED=1 -I/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/build/unix/elfhack -I/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack -I/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/dist/include -MD -MP -MF .deps/host_elfhack.o.pp -I/usr/include/nspr /var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/build/unix/elfhack/elfhack.cpp
gmake[4]: Leaving directory '/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack'
gmake[4]: Entering directory '/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack'
build/unix/elfhack/elfhack
/usr/bin/x86_64-pc-linux-gnu-g++ -o elfhack -freorder-blocks -O2 host_elf.o host_elfhack.o
/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/_virtualenvs/init/bin/python -m mozbuild.action.check_binary --host elfhack
gmake[4]: Leaving directory '/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack'
| Reporter | ||
Comment 7•7 years ago
|
||
| Assignee | ||
Comment 8•7 years ago
|
||
We were allocating ElfSection's data with new[] and modifying it with
realloc in some places, which causes allocator mismatches.
Consistently manage the data with malloc, realloc, and free instead.
| Assignee | ||
Comment 9•7 years ago
|
||
(In reply to Arfrever Frehtes Taifersar Arahesis from comment #6)
That part of Firefox build system ignores user-provided CFLAGS, CXXFLAGS and LDFLAGS:
Thanks for providing the information on compiling elfhack. Compiling elfhack is supposed to ignore those flags, since elfhack is a host binary, and we have separate HOST_CFLAGS, HOST_CXXFLAGS, etc. for host compilation.
I ran things with Valgrind, and it did point out some allocator mismatches, which I suppose could cause the errors seen, if gentoo is running with a hardened malloc of some kind. Can you apply the patch I posted and re-run the build? Thanks.
| Reporter | ||
Comment 10•7 years ago
|
||
I have tested this patch.
Unfortunately the same error (malloc(): corrupted top size) still occurs.
| Assignee | ||
Comment 11•7 years ago
|
||
(In reply to Arfrever Frehtes Taifersar Arahesis from comment #4)
Using of
-mfunction-return=thunk -mindirect-branch=thunkflags inCFLAGS/CXXFLAGSis required to reproduce this bug.
These flags are used for mitigation of Spectre vulnerability (variant 2).
Can you confirm that not using these flags results in a successful build?
| Reporter | ||
Comment 12•7 years ago
|
||
I have been able to reproduce malloc(): corrupted top size error on two separate systems with similar configuration (the same version of GCC, glibc etc.).
In one of these systems, I tried building Firefox in multiple variants of flags, and not using -mfunction-return=thunk -mindirect-branch=thunk resulted in successful build. Specifically, error has been occurring when using both these flags, not only one of them.
It may be that there are other conditions required to reproduce this error.
| Reporter | ||
Comment 13•7 years ago
|
||
When analyzing more of build log and reading elfhack.cpp, I noticed that elfhack at run-time magically uses inject/x86_64.o.
The rule for building inject/x86_64.o actually respects user-provided CFLAGS and this is what actually matters.
Flags used for test-array.c -> test-array.o -> test-array.so and test-ctors.c -> test-ctors.o -> test-ctors.so seem to not matter for reproduction of this problem.
gmake[4]: Entering directory '/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack/inject'
build/unix/elfhack/inject/x86_64.o
/usr/bin/x86_64-pc-linux-gnu-gcc -std=gnu99 -o x86_64.o -c -DNDEBUG=1 -DTRIMMED=1 -I/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/build/unix/elfhack/inject -I/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack/inject -I/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/dist/include -I/usr/include/nspr -I/usr/include/nss -I/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/dist/include/nss -I/usr/include/pixman-1 -fPIC -include /var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/mozilla-config.h -DMOZILLA_CLIENT -march=native -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register -O2 -fno-stack-protector -fno-lto -Wall -Wempty-body -Wignored-qualifiers -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wduplicated-cond -Wno-error=maybe-uninitialized -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=multistatement-macros -Wno-error=class-memaccess -Wformat -Wformat-security -Wformat-overflow=2 -MD -MP -MF .deps/x86_64.o.pp -fdiagnostics-color /var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack/inject/x86_64.c
1:11.62 gmake[4]: Leaving directory '/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack/inject'
| Reporter | ||
Comment 14•7 years ago
|
||
So you need to rebuild inject/x86_64.o with both -mfunction-return=thunk -mindirect-branch=thunk to reproduce problem.
| Assignee | ||
Comment 15•7 years ago
|
||
Can you provide a copy of inject/x86_64.o built with such options?
Comment 16•7 years ago
|
||
| Assignee | ||
Updated•7 years ago
|
| Reporter | ||
Comment 17•7 years ago
|
||
Comment 18•7 years ago
|
||
| bugherder | ||
| Assignee | ||
Comment 19•7 years ago
|
||
Ah, thanks for the inject file. valgrind now complains:
test-ctors.so.bak: ==16305== Invalid write of size 8
==16305== at 0x4C326CB: memcpy@@GLIBC_2.14 (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16305== by 0x40ED5E: ElfRelHackCode_Section::ElfRelHackCode_Section(serializable<Elf_Shdr_Traits>&, Elf&, ElfRelHack_Section&, unsigned int, unsigned int, unsigned int) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305== by 0x413C3C: int do_relocation_section<Elf_Rela>(Elf*, unsigned int, unsigned int, bool) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305== by 0x40C69A: do_file(char const*, bool, bool) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305== by 0x402137: main (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305== Address 0x5ae63f0 is 240 bytes inside a block of size 241 alloc'd
==16305== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16305== by 0x40ED25: ElfRelHackCode_Section::ElfRelHackCode_Section(serializable<Elf_Shdr_Traits>&, Elf&, ElfRelHack_Section&, unsigned int, unsigned int, unsigned int) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305== by 0x413C3C: int do_relocation_section<Elf_Rela>(Elf*, unsigned int, unsigned int, bool) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305== by 0x40C69A: do_file(char const*, bool, bool) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305== by 0x402137: main (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305==
==16305== Invalid write of size 2
==16305== at 0x4C32723: memcpy@@GLIBC_2.14 (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16305== by 0x40ED5E: ElfRelHackCode_Section::ElfRelHackCode_Section(serializable<Elf_Shdr_Traits>&, Elf&, ElfRelHack_Section&, unsigned int, unsigned int, unsigned int) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305== by 0x413C3C: int do_relocation_section<Elf_Rela>(Elf*, unsigned int, unsigned int, bool) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305== by 0x40C69A: do_file(char const*, bool, bool) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305== by 0x402137: main (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305== Address 0x5ae6400 is 15 bytes after a block of size 241 alloc'd
==16305== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16305== by 0x40ED25: ElfRelHackCode_Section::ElfRelHackCode_Section(serializable<Elf_Shdr_Traits>&, Elf&, ElfRelHack_Section&, unsigned int, unsigned int, unsigned int) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305== by 0x413C3C: int do_relocation_section<Elf_Rela>(Elf*, unsigned int, unsigned int, bool) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305== by 0x40C69A: do_file(char const*, bool, bool) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305== by 0x402137: main (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
| Assignee | ||
Comment 20•7 years ago
|
||
We were never adjusting last in this loop, so we were computing the
wrong addresses for all sections beyond the first. Which in turn meant
that we would compute the wrong size for the section data we needed to
allocate.
| Assignee | ||
Comment 21•7 years ago
|
||
The new patch makes elfhacking the tests with the modified inject/x86_64.o file succeed. I could trigger crashes prior to the patch without valgrind, so I think things are in a better state now. And valgrind no longer complains.
| Reporter | ||
Comment 22•7 years ago
|
||
(In reply to Nathan Froyd [:froydnj] from comment #20)
Created attachment 9059488 [details]
Bug 1542958 - fix code section adjustments in elfhack; r=glandiumWe were never adjusting
lastin this loop, so we were computing the
wrong addresses for all sections beyond the first. Which in turn meant
that we would compute the wrong size for the section data we needed to
allocate.
I confirm that this patch works for me.
I have one additional suggestion.
The message printed by build system currently is:
===
=== If you get failures below, please file a bug describing the error
=== and your environment (compiler and linker versions), and
=== provide the pre-elfhacked library as an attachment.
=== Use --disable-elf-hack until this is fixed.
===
I suggest that this message also ask to provide inject/*.o file, since this bug revealed that appropriate inject/*.o file can be required to reproduce a problem.
--- build/unix/elfhack/Makefile.in
+++ build/unix/elfhack/Makefile.in
@@ -10,7 +10,7 @@
@echo ===
@echo === If you get failures below, please file a bug describing the error
@echo === and your environment \(compiler and linker versions\), and
- @echo === provide the pre-elfhacked library as an attachment.
+ @echo === provide the pre-elfhacked libraries (*.so.bak) and inject/*.o file as attachments.
@echo === Use --disable-elf-hack until this is fixed.
@echo ===
# Fail if the library doesn't have $(DT_TYPE) .dynamic info
| Reporter | ||
Comment 23•7 years ago
|
||
Parentheses and * would need escaping, but better to fully quote arguments:
--- build/unix/elfhack/Makefile.in
+++ build/unix/elfhack/Makefile.in
@@ -7,12 +7,12 @@
test-array$(DLL_SUFFIX) test-ctors$(DLL_SUFFIX): %$(DLL_SUFFIX): %.$(OBJ_SUFFIX) elfhack
$(MKSHLIB) $(LDFLAGS) $< -nostartfiles
- @echo ===
- @echo === If you get failures below, please file a bug describing the error
- @echo === and your environment \(compiler and linker versions\), and
- @echo === provide the pre-elfhacked library as an attachment.
- @echo === Use --disable-elf-hack until this is fixed.
- @echo ===
+ @echo "==="
+ @echo "=== If you get failures below, please file a bug describing the error"
+ @echo "=== and your environment (compiler and linker versions, *FLAGS variables), and"
+ @echo "=== provide the pre-elfhacked libraries (*.so.bak) and inject/*.o file as attachments."
+ @echo "=== Use --disable-elf-hack until this is fixed."
+ @echo "==="
# Fail if the library doesn't have $(DT_TYPE) .dynamic info
$(TOOLCHAIN_PREFIX)readelf -d $@ | grep '($(DT_TYPE))'
@rm -f $@.bak
Comment 24•7 years ago
|
||
Comment 25•7 years ago
|
||
| bugherder | ||
| Assignee | ||
Comment 26•7 years ago
|
||
Comment on attachment 9059488 [details]
Bug 1542958 - fix code section adjustments in elfhack; r=glandium
Beta/Release Uplift Approval Request
- User impact if declined: Possible weird crashes (?), third parties unable to build Firefox in certain build configurations.
- Is this code covered by automated tests?: Yes
- Has the fix been verified in Nightly?: Yes
- Needs manual test from QE?: No
- If yes, steps to reproduce:
- List of other uplifts needed: None
- Risk to taking this patch: Low
- Why is the change risky/not risky? (and alternatives if risky): This is a weird patch. It fixes an obvious problem, but the problem has been around for a long long time (a good chunk of the time we've run elfhack on our binaries) and we've never noticed it. It does fix some valgrind errors in certain build configurations, so it seems worth uplifting as a safety measure. Low risk overall.
- String changes made/needed: None.
| Assignee | ||
Updated•7 years ago
|
Comment 27•7 years ago
|
||
Comment on attachment 9059488 [details]
Bug 1542958 - fix code section adjustments in elfhack; r=glandium
We are in our last betas before RC and we have shipped with this bug for a very long time without even noticing so I think it can ride the 68 train.
Updated•7 years ago
|
Description
•