1 |
Simon Stelling wrote: |
2 |
>> /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1/../../../../x86_64-pc-linux-gnu/bin/ld: |
3 |
>> |
4 |
>> warning: creating a DT_TEXTREL in object. |
5 |
>> /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1/../../../../x86_64-pc-linux-gnu/bin/ld: |
6 |
>> |
7 |
>> ucol_wgt.o: relocation R_X86_64_PC32 against `compareRanges' can not be |
8 |
>> used when making a shared object; recompile with -fPIC |
9 |
>> /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1/../../../../x86_64-pc-linux-gnu/bin/ld: |
10 |
>> |
11 |
>> final link failed: Bad value |
12 |
>> collect2: ld returned 1 exit status |
13 |
> |
14 |
> I didn't look at the code yet, but I guess it has some #ifndef |
15 |
> __OPTIMIZED__. __OPTIMIZED__ is set by gcc with -O2 and above. I guess |
16 |
> if you switch back to your -O3 CFLAGS it will compile. |
17 |
|
18 |
Actually, it would be __OPTIMIZE__, but that wasn't the culprit. The |
19 |
function compareRanges is declared as follows: |
20 |
|
21 |
static U_INLINE int32_t U_CALLCONV |
22 |
compareRanges(const void *context, const void *left, const void *right); |
23 |
|
24 |
And in another function used as an argument to a third function, i.e. |
25 |
pointed at with a pointer, but as it's inline you can't point at it. |
26 |
|
27 |
Now the only thing left is to find out why the heck it fails with |
28 |
-O{0,1} but not >= -02... |
29 |
|
30 |
-- |
31 |
Kind Regards, |
32 |
|
33 |
Simon Stelling |
34 |
Gentoo/AMD64 developer |
35 |
-- |
36 |
gentoo-amd64@g.o mailing list |