Dave Mitchell found the gcc problem with infback.c, so it's no a perl CORE problem
Show quoted text> Nope, it appears to be a gcc bug.
> First, it's reproducible with just linking infback.o, which doesn't rely
> on perl src; and second, I've reduced it to the following minimal case:
>
> $ cc -c -g3 -fstack-protector -fPIC foo.c
> $ cc -shared -g3 foo.o -o /tmp/foo.so
> /usr/bin/ld: final link failed: Memory exhausted
> collect2: error: ld returned 1 exit status
> foo.c:
>
> #define FOO1
> #define FOO2
> #define FOO3
> #define FOO4
> #define FOO5
> #define FOO6
> #define FOO7
> #define FOO8
> #define FOO9
> #define FOO10
> #define FOO11
> #define FOO12
> #define FOO13
> #define FOO14
> #define FOO15
> #define FOO16
> #define FOO17
> #define FOO18
> #define FOO19
> #define FOO20
> #define FOO21
> #define FOO22
> #define FOO23
> #define FOO24
> #define FOO25
> #define FOO26
> #define FOO27
> #define FOO28
> #define BAR1
> #define BAR2
> #define BAR3
> #define BAR4
> #define BAR5
> #define BAR6
> #define BAR7
> #define BAR8
> #define BAR9
> #define BAR10
> #define BAR11
> #define BAR12
> #define BAR13
> #define BAR14
> #define BAR15
> #define BAR16
> #define BAR17
> #define BAR18
> #define BAR19
> #define BAR20
> #define BAR21
> #define BAR22
> #define BAR23
> #define BAR24
> #define BAR25
> #define BAR26
> #define BAR27
> #define BAR28
> #define BAR29
> #define BAR30
> #define BAR31
> #define BAR32
> #define BAR33
> #define BAR34
> #define BAR35
> #define BAR36
> #define BAR37
> #define BAR38
> #define BAR39
> #define BAR40
> #define BAR41
> #define BAR42
> #define BAR43
> #define BAR44
> #define BAR45
> #define BAR46
> #define BAR47
> #define BAR48
> #define BAR49
> #define BAR50
> #define BAR51
> #define BAR52
> #define BAR53
> #define BAR54
> #define BAR55
> #define BAR56
> #define BAR57
> #define BAR58
> #define BAR59
> #define BAR60
> #define BAR61
> #define ZLIB_VER_SUBREVISION 0
>
> typedef char chr1;
> typedef chr1 chr2;
> typedef int int2;
> typedef int int1;
> typedef void *voidpf;
> typedef void (*funcp)();
>
> struct struct4 {int i;};
>
> typedef struct struct3 {
> unsigned int v2;
> int v3;
> long v6;
> char v7;
> int v12;
> int v13;
> int1 v14;
> int2 v5;
> chr2 v4;
> chr2 v1;
> struct struct4 *v8;
> funcp v9;
> funcp v10;
> voidpf v11;
> } struct2;
>
> typedef struct2 *type2;
>
> typedef short foo1;
>
> typedef enum {
> E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15,
> } enum1;
>
> struct struct1 {
> enum1 mode;
> };
>
> int f1(type2 t2, int i1, int i2, int i3, int i4) {
> struct struct1 *s1;
> }
>
>