diff options
author | Toni Uhlig <matzeton@googlemail.com> | 2020-05-24 16:48:22 +0200 |
---|---|---|
committer | Toni Uhlig <matzeton@googlemail.com> | 2020-05-25 21:57:14 +0200 |
commit | 31c69b6ca1b91e7fd9fd8e14082fd2584c5f538c (patch) | |
tree | 16e789c7d68608831b498f41f54d9482b82a711a /deps/gcc-4.9.4-naked.patch |
first public release
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
Diffstat (limited to 'deps/gcc-4.9.4-naked.patch')
-rw-r--r-- | deps/gcc-4.9.4-naked.patch | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/deps/gcc-4.9.4-naked.patch b/deps/gcc-4.9.4-naked.patch new file mode 100644 index 0000000..c3c7e74 --- /dev/null +++ b/deps/gcc-4.9.4-naked.patch @@ -0,0 +1,66 @@ +diff -Naur gcc-4.9.4-orig/gcc/config/i386/i386.c gcc-4.9.4/gcc/config/i386/i386.c +--- gcc-4.9.4-orig/gcc/config/i386/i386.c ++++ gcc-4.9.4/gcc/config/i386/i386.c +@@ -6041,6 +6041,14 @@ + return false; + } + ++static bool ++ix86_function_naked (const_tree fn) ++{ ++ if (fn && lookup_attribute ("naked", DECL_ATTRIBUTES (fn))) ++ return true; ++ return false; ++} ++ + static enum calling_abi + ix86_function_abi (const_tree fndecl) + { +@@ -9078,6 +9086,9 @@ + { + struct ix86_frame frame; + ++ if (ix86_function_naked (current_function_decl)) ++ return false; ++ + if (! reload_completed || frame_pointer_needed) + return 0; + +@@ -9090,7 +9101,7 @@ + return (frame.stack_pointer_offset == UNITS_PER_WORD + && (frame.nregs + frame.nsseregs) == 0); + } +- ++ + /* Value should be nonzero if functions must have frame pointers. + Zero means the frame pointer need not be set up (and parms may + be accessed via the stack pointer) in functions that seem suitable. */ +@@ -10753,6 +10764,9 @@ + bool int_registers_saved; + bool sse_registers_saved; + ++ if (ix86_function_naked (current_function_decl)) ++ return; ++ + ix86_finalize_stack_realign_flags (); + + /* DRAP should not coexist with stack_realign_fp */ +@@ -11459,6 +11473,9 @@ + bool restore_regs_via_mov; + bool using_drap; + ++ if (ix86_function_naked (current_function_decl)) ++ return; ++ + ix86_finalize_stack_realign_flags (); + ix86_compute_frame_layout (&frame); + +@@ -42414,6 +42431,8 @@ + false }, + { "callee_pop_aggregate_return", 1, 1, false, true, true, + ix86_handle_callee_pop_aggregate_return, true }, ++ { "naked", 0, 0, true, false, false, ++ ix86_handle_fndecl_attribute, false }, + /* End element. */ + { NULL, 0, 0, false, false, false, NULL, false } + }; |