diff mbox series

Build i386's crti.o and crtn.o for x86_64-*-rtems*

Message ID 8760477lx3.fsf@mail.gmail.com
State New
Headers show
Series Build i386's crti.o and crtn.o for x86_64-*-rtems* | expand

Commit Message

Amaan Cheval May 1, 2018, 9:41 a.m. UTC
Hi!

The x86_64 RTEMS target doesn't currently have gcc build crti.o and crtn.o. This
surfaces as undefined references to "_fini", which RTEMS references in its
kernel:
https://git.rtems.org/rtems/tree/cpukit/libcsupport/src/newlibc_exit.c#n39

Most other architectures deal with this by adding crti.o to the startfile in
bsp_specs:
https://git.rtems.org/rtems/tree/bsps/i386/pc386/start/bsp_specs#n6

This patch uses GCC's i386's crti.S and crtn.S (since x86_64-*-* targets use
"cpu_type=i386") as the source for the object files:
https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libgcc/config/i386/crti.S;h=c25e8f9e3ab45e935f6287d5ed3a8437a289e059;hb=HEAD

The patch is as follows:

libgcc/ChangeLog:

2018-05-01  Amaan Cheval  <amaan.cheval@gmail.com>

	* config.host: Build i386's crti.o and crtn.o for x86_64-*-rtems*

Comments

Amaan Cheval May 3, 2018, 7:10 a.m. UTC | #1
Hey!

Just thought I'd bump this patch and see if anyone had a chance to look at
it! Let me know if you have any questions or would like anything to be
different (for eg. to split "x86_64-*-elf*" and "x86_64-*-rtems*" into
their own case statements, instead of what I have here.
On Tue, May 1, 2018 at 3:24 PM Amaan Cheval <amaan.cheval@gmail.com> wrote:


> Hi!

> The x86_64 RTEMS target doesn't currently have gcc build crti.o and
crtn.o. This
> surfaces as undefined references to "_fini", which RTEMS references in its
> kernel:
> https://git.rtems.org/rtems/tree/cpukit/libcsupport/src/newlibc_exit.c#n39

> Most other architectures deal with this by adding crti.o to the startfile
in
> bsp_specs:
> https://git.rtems.org/rtems/tree/bsps/i386/pc386/start/bsp_specs#n6

> This patch uses GCC's i386's crti.S and crtn.S (since x86_64-*-* targets
use
> "cpu_type=i386") as the source for the object files:

https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libgcc/config/i386/crti.S;h=c25e8f9e3ab45e935f6287d5ed3a8437a289e059;hb=HEAD

> The patch is as follows:

> libgcc/ChangeLog:

> 2018-05-01  Amaan Cheval  <amaan.cheval@gmail.com>

>          * config.host: Build i386's crti.o and crtn.o for x86_64-*-rtems*

> Index: libgcc/config.host
> ===================================================================
> --- libgcc/config.host  (revision 259789)
> +++ libgcc/config.host  (working copy)
> @@ -611,6 +611,11 @@ i[34567]86-*-elf*)
>          ;;
>   x86_64-*-elf* | x86_64-*-rtems*)
>          tmake_file="$tmake_file i386/t-crtstuff t-crtstuff-pic
t-libgcc-pic"
> +       case ${host} in
> +       x86_64-*-rtems*)
> +         extra_parts="$extra_parts crti.o crtn.o"
> +         ;;
> +       esac
>          ;;
>   x86_64-*-fuchsia*)
>          tmake_file="$tmake_file t-libgcc-pic"
diff mbox series

Patch

Index: libgcc/config.host
===================================================================
--- libgcc/config.host	(revision 259789)
+++ libgcc/config.host	(working copy)
@@ -611,6 +611,11 @@  i[34567]86-*-elf*)
 	;;
 x86_64-*-elf* | x86_64-*-rtems*)
 	tmake_file="$tmake_file i386/t-crtstuff t-crtstuff-pic t-libgcc-pic"
+	case ${host} in
+	x86_64-*-rtems*)
+	  extra_parts="$extra_parts crti.o crtn.o"
+	  ;;
+	esac
 	;;
 x86_64-*-fuchsia*)
 	tmake_file="$tmake_file t-libgcc-pic"