I just finished stage 1 of my first Gentoo install (from the 2.6 live cd) I put ~x86 in my ACCEPT_KEYWORDS after stage 1, which the installation guide said I could do if I so desired. I got halfway through with emerge system when modutils didn't emerge. I went to #gentoo and worked with several users over the course of a couple of hours and came up with no solutions. I tried multiple versions of modutils and module-init-utils, to no avail. I also tried filtering out the -yet_exec flag, in which case it would error with: sys_oim.c: In function `old_sys_init_module': sys_oim.c:38: can't find a register in class `BREG' while reloading `asm' I also tried exiting the chroot and re-entering, which had no effect. Reproducible: Always Steps to Reproduce: 1. follow the installation guide with the 2.6 live CD until after boostrap 2. ACCEPT_KEYWORDS="~x86" 3. emerge system or emerge modutils Actual Results: It didn't compile. Expected Results: It should have compiled. Here is the contents of my modutils config.log: This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. configure:646: checking host system type configure:667: checking target system type configure:685: checking build system type configure:948: checking for query_module in -lc configure:967: gcc -o conftest -march=pentium4 -O3 -pipe -fomit-frame-pointer -yet_exec conftest.c -lc 1>&5 /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../crt1S_noncsu.o(.text+0x0): In function `_start': : multiple definition of `_start' /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../crt1.o(.text+0x0): first defined here /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../crt1S_noncsu.o(.rodata+0x0): multiple definition of `_fp_hw' /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../crt1.o(.rodata+0x0): first defined here /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../crt1S_noncsu.o(.data+0x0): In function `data_start': : multiple definition of `__data_start' /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../crt1.o(.data+0x0): first defined here /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../crt1S_noncsu.o(.rodata+0x4): multiple definition of `_IO_stdin_used' /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../crt1.o(.rodata+0x4): first defined here collect2: ld returned 1 exit status configure: failed program was: #line 956 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char query_module(); int main() { query_module() ; return 0; } configure:1038: checking for gcc configure:1151: checking whether the C compiler (gcc -march=pentium4 -O3 -pipe -fomit- frame-pointer -yet_exec ) works configure:1167: gcc -o conftest -march=pentium4 -O3 -pipe -fomit-frame-pointer -yet_exec conftest.c 1>&5 /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../crt1S_noncsu.o(.text+0x0): In function `_start': : multiple definition of `_start' /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../crt1.o(.text+0x0): first defined here /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../crt1S_noncsu.o(.rodata+0x0): multiple definition of `_fp_hw' /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../crt1.o(.rodata+0x0): first defined here /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../crt1S_noncsu.o(.data+0x0): In function `data_start': : multiple definition of `__data_start' /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../crt1.o(.data+0x0): first defined here /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../crt1S_noncsu.o(.rodata+0x4): multiple definition of `_IO_stdin_used' /usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3/../../../crt1.o(.rodata+0x4): first defined here collect2: ld returned 1 exit status configure: failed program was: #line 1162 "configure" #include "confdefs.h" main(){return(0);}
sys_oim.c:38: can't find a register in class `BREG' while reloading `asm' that is a PIC bug
I had this problem too with the same live cd 2.6 I even bootstrapped twice because I thought the first time borked...but what I found is the hardened-gcc is causing modutils to not compile. So i did: #hardened-gcc -r and it put gcc back to it's original settings. I just finished compiling it successfully by turning off hardend-gcc.
Reassigning, as this is not a code problem and looks more like a configure / GCC problem. The corrupted symbols are in the GCC area, not the modutils area, so something is wrong with your GCC... Try running autoconf if autoconf is used for generating the configure script incase something is wrong with that. Or, this may be a hardened-gcc bug as <luedchic at yahoo dot com> reported...
this is caused by crt1.o and crt1S_noncsu.o being linked into a binary at the same time... leading to the _start being inside the target binary twice, which leads into this linking error can you do cat $(gcc-config -L)/specs into this bug please if gcc-config -L works for you and gives out a valid directory, otherwise get the dirname from gcc -v and cd into the directory and give me the specs file and then hardened-gcc -l and hardened-gcc -v thanks in advance, Alex
Why would it link to crt1S_noncsu.o at all if it's filtering -fPIC and appending -yet_exec?
modutils is fixed.