]> git.pld-linux.org Git - packages/fpc.git/blob - glibc-2.34.patch
- fixes from fedora, rel 2
[packages/fpc.git] / glibc-2.34.patch
1 From a6c82b6642871e1c68f3839e090b055bee4254b0 Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= <dan@danny.cz>
3 Date: Tue, 21 Sep 2021 12:47:28 +0200
4 Subject: [PATCH] update startup data structs for glibc >= 2.34
5
6 Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2005910
7 Fixes: https://gitlab.com/freepascal.org/fpc/source/-/issues/39295
8 ---
9  rtl/linux/aarch64/cprt0.as   | 6 ++----
10  rtl/linux/i386/si_c21.inc    | 7 +++----
11  rtl/linux/powerpc64/cprt0.as | 4 ++--
12  rtl/linux/powerpc64/gprt0.as | 4 ++--
13  rtl/linux/powerpc64/si_c.inc | 7 ++-----
14  rtl/linux/powerpc64/si_g.inc | 7 ++-----
15  6 files changed, 13 insertions(+), 22 deletions(-)
16
17 diff --git a/rtl/linux/aarch64/cprt0.as b/rtl/linux/aarch64/cprt0.as
18 index fd83610fbc..c8f2ca4baa 100644
19 --- a/rtl/linux/aarch64/cprt0.as
20 +++ b/rtl/linux/aarch64/cprt0.as
21 @@ -41,10 +41,8 @@ _start:
22                              init, fini, rtld_fini, stack_end) */
23         adrp    x0,:got:PASCALMAIN
24         ldr     x0,[x0,#:got_lo12:PASCALMAIN]
25 -       adrp    x3,:got:__libc_csu_init
26 -       ldr     x3,[x3,#:got_lo12:__libc_csu_init]
27 -       adrp    x4,:got:__libc_csu_fini
28 -       ldr     x4,[x4,#:got_lo12:__libc_csu_fini]
29 +       mov     x3, #0          /* Used to be init.  */
30 +       mov     x4, #0          /* Used to be fini.  */
31         bl      __libc_start_main
32  
33         /* This should never happen */
34 diff --git a/rtl/linux/i386/si_c21.inc b/rtl/linux/i386/si_c21.inc
35 index 71df29b6ef..084cdcf3ce 100644
36 --- a/rtl/linux/i386/si_c21.inc
37 +++ b/rtl/linux/i386/si_c21.inc
38 @@ -35,8 +35,6 @@
39  
40  {$asmmode att}
41  
42 -procedure __libc_csu_init; cdecl; external;
43 -procedure __libc_csu_fini; cdecl; external;
44  procedure libc_start_main; external name '__libc_start_main';
45  procedure libc_exit(code: longint); cdecl; external name 'exit';
46  
47 @@ -93,8 +91,9 @@ procedure _FPC_libc21_start; assembler; nostackframe; public name '_start';
48          pushl %esp                     { stack_end }
49          pushl %edx                     { function to be registered with
50                                           atexit(), passed by loader }
51 -        pushl $__libc_csu_fini
52 -        pushl $__libc_csu_init
53 +        { This used to be the addresses of .fini and .init.  }
54 +        pushl $0
55 +        pushl $0
56          pushl %esi                      { Push second argument: argv.  }
57          pushl %ecx                      { Push first argument: argc.  }
58  
59 diff --git a/rtl/linux/powerpc64/cprt0.as b/rtl/linux/powerpc64/cprt0.as
60 index 2b8309d4bf..3eace2813d 100644
61 --- a/rtl/linux/powerpc64/cprt0.as
62 +++ b/rtl/linux/powerpc64/cprt0.as
63 @@ -351,8 +351,8 @@ _restvr_31: addi r12,r0,-16
64  start_addresses:
65      .quad   0 /* was _SDA_BASE_  but not in 64-bit ABI*/
66      .quad   main_stub
67 -    .quad   __libc_csu_init
68 -    .quad   __libc_csu_fini
69 +    .quad   0 /* Used to be init. */
70 +    .quad   0 /* Used to be fini. */
71      .size   start_adresses, .-start_addresses
72  
73  /*
74 diff --git a/rtl/linux/powerpc64/gprt0.as b/rtl/linux/powerpc64/gprt0.as
75 index de31b6b08d..6b6fc9011b 100644
76 --- a/rtl/linux/powerpc64/gprt0.as
77 +++ b/rtl/linux/powerpc64/gprt0.as
78 @@ -351,8 +351,8 @@ _restvr_31: addi r12,r0,-16
79  start_addresses:
80      .quad   0 /* was _SDA_BASE_  but not in 64-bit ABI*/
81      .quad   main_stub
82 -    .quad   __libc_csu_init
83 -    .quad   __libc_csu_fini
84 +    .quad   0 /* Used to be init. */
85 +    .quad   0 /* Used to be fini. */
86      .size   start_adresses, .-start_addresses
87  
88  /*
89 diff --git a/rtl/linux/powerpc64/si_c.inc b/rtl/linux/powerpc64/si_c.inc
90 index c7e5e353a0..2833258c93 100644
91 --- a/rtl/linux/powerpc64/si_c.inc
92 +++ b/rtl/linux/powerpc64/si_c.inc
93 @@ -657,9 +657,6 @@ procedure _restfpr_30; cdecl; public; assembler; nostackframe;
94                            Process start/halt
95   ******************************************************************************}
96  
97 -procedure __libc_csu_init; cdecl; external;
98 -procedure __libc_csu_fini; cdecl; external;
99 -
100  procedure __libc_start_main(r3,r4,r5,r6,r7,r8,r9: pointer); cdecl; external;
101  
102  var
103 @@ -724,8 +721,8 @@ procedure main_stub(argc: longint; argv, envp: ppchar); cdecl; assembler; nostac
104    end
105    = (sda_base: nil; {* was _SDA_BASE_  but not in 64-bit ABI }
106       main: @main_stub;
107 -     libc_csu_init: @__libc_csu_init;
108 -     libc_csu_fini: @__libc_csu_fini
109 +     libc_csu_init: nil;
110 +     libc_csu_fini: nil
111      );
112  
113  
114 diff --git a/rtl/linux/powerpc64/si_g.inc b/rtl/linux/powerpc64/si_g.inc
115 index 8c99a39bc6..58cdf19f9c 100644
116 --- a/rtl/linux/powerpc64/si_g.inc
117 +++ b/rtl/linux/powerpc64/si_g.inc
118 @@ -657,9 +657,6 @@ procedure _restfpr_30; cdecl; public; assembler; nostackframe;
119                            Process start/halt
120   ******************************************************************************}
121  
122 -procedure __libc_csu_init; cdecl; external;
123 -procedure __libc_csu_fini; cdecl; external;
124 -
125  procedure __libc_start_main(r3,r4,r5,r6,r7,r8,r9: pointer); cdecl; external;
126  
127  type
128 @@ -745,8 +742,8 @@ procedure main_stub(argc: longint; argv, envp: ppchar); cdecl; assembler; nostac
129    end
130    = (sda_base: nil; {* was _SDA_BASE_  but not in 64-bit ABI }
131       main: @main_stub;
132 -     libc_csu_init: @__libc_csu_init;
133 -     libc_csu_fini: @__libc_csu_fini
134 +     libc_csu_init: nil;
135 +     libc_csu_fini: nil
136      );
137  
138  procedure call_libc_start_main(r3,r4,r5,r6,r7,r8,r9: pointer); cdecl;
139 -- 
140 2.31.1
141
This page took 0.102491 seconds and 3 git commands to generate.