Module: wine Branch: master Commit: 4e25c07689d4958cd070f0589dab8a2d06004bb9 URL: https://gitlab.winehq.org/wine/wine/-/commit/4e25c07689d4958cd070f0589dab8a2...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Feb 27 12:51:46 2024 +0100
winebuild: Remove some no longer used support for ELF ARM platforms.
---
tools/winebuild/build.h | 2 -- tools/winebuild/import.c | 42 +++++++++++-------------------------- tools/winebuild/spec32.c | 25 ++++------------------ tools/winebuild/utils.c | 54 +++--------------------------------------------- 4 files changed, 19 insertions(+), 104 deletions(-)
diff --git a/tools/winebuild/build.h b/tools/winebuild/build.h index af7861275a3..a469a0e9042 100644 --- a/tools/winebuild/build.h +++ b/tools/winebuild/build.h @@ -301,8 +301,6 @@ extern const char *get_asm_export_section(void); extern const char *get_asm_rodata_section(void); extern const char *get_asm_rsrc_section(void); extern const char *get_asm_string_section(void); -extern const char *arm64_page( const char *sym ); -extern const char *arm64_pageoff( const char *sym ); extern void output_function_header( const char *func, int global ); extern void output_function_size( const char *name ); extern void output_gnu_stack_note(void); diff --git a/tools/winebuild/import.c b/tools/winebuild/import.c index a2473efc5ba..eb9f0205eb5 100644 --- a/tools/winebuild/import.c +++ b/tools/winebuild/import.c @@ -777,19 +777,7 @@ static void output_import_thunk( const char *name, const char *table, int pos ) case CPU_x86_64: output( "\tjmpq *%s+%d(%%rip)\n", table, pos ); break; - case CPU_ARM: - output( "\tldr ip, 1f\n"); - output( "\tldr pc, [ip]\n"); - output( "1:\t.long %s+%u\n", table, pos ); - break; - case CPU_ARM64: - output( "\tadrp x16, %s\n", arm64_page( table ) ); - output( "\tadd x16, x16, #%s\n", arm64_pageoff( table ) ); - if (pos & ~0x7fff) output( "\tadd x16, x16, #%u\n", pos & ~0x7fff ); - output( "\tldr x16, [x16, #%u]\n", pos & 0x7fff ); - output( "\tbr x16\n" ); - break; - case CPU_ARM64EC: + default: assert( 0 ); break; } @@ -1077,9 +1065,7 @@ static void output_delayed_import_thunks( const DLLSPEC *spec ) output_cfi( ".cfi_adjust_cfa_offset -0x98" ); output( "\tjmp *%%rax\n" ); break; - case CPU_ARM: - case CPU_ARM64: - case CPU_ARM64EC: + default: assert( 0 ); break; } @@ -1109,9 +1095,7 @@ static void output_delayed_import_thunks( const DLLSPEC *spec ) output( "\tleaq .L__wine_delay_IAT+%d(%%rip),%%rax\n", iat_pos ); output( "\tjmp %s\n", asm_name(module_func) ); break; - case CPU_ARM: - case CPU_ARM64: - case CPU_ARM64EC: + default: assert( 0 ); break; } @@ -1274,14 +1258,12 @@ void output_stubs( DLLSPEC *spec ) case CPU_ARM64EC: output( "\t.seh_proc %s\n", arm64_name(name) ); output( "\t.seh_endprologue\n" ); - output( "\tadrp x0, %s\n", arm64_page(".L__wine_spec_file_name") ); - output( "\tadd x0, x0, #%s\n", arm64_pageoff(".L__wine_spec_file_name") ); + output( "\tadrp x0, .L__wine_spec_file_name\n" ); + output( "\tadd x0, x0, #:lo12:.L__wine_spec_file_name\n" ); if (exp_name) { - char *sym = strmake( ".L%s_string", name ); - output( "\tadrp x1, %s\n", arm64_page( sym ) ); - output( "\tadd x1, x1, #%s\n", arm64_pageoff( sym ) ); - free( sym ); + output( "\tadrp x1, .L%s_string\n", name ); + output( "\tadd x1, x1, #:lo12:.L%s_string\n", name ); } else output( "\tmov x1, %u\n", odp->ordinal ); @@ -1532,7 +1514,7 @@ static void build_windows_import_lib( const char *lib_name, DLLSPEC *spec, struc output( "\tstp x6, x7, [sp, #64]\n" ); output( "\tmov x1, x16\n" ); output( "\tadrp x0, %s\n", asm_name( import_desc ) ); - output( "\tadd x0, x0, #%s\n", asm_name( import_desc ) ); + output( "\tadd x0, x0, #:lo12:%s\n", asm_name( import_desc ) ); output( "\tbl __delayLoadHelper2\n" ); output( "\tmov x16, x0\n" ); output( "\tldp x0, x1, [sp, #16]\n" ); @@ -1677,15 +1659,15 @@ static void build_windows_import_lib( const char *lib_name, DLLSPEC *spec, struc output( "1:\t.long %s\n", asm_name( imp_name ) ); break; case CPU_ARM64: - output( "\tadrp x16, %s\n", arm64_page( asm_name( imp_name ) ) ); - output( "\tadd x16, x16, #%s\n", arm64_pageoff( asm_name( imp_name ) ) ); + output( "\tadrp x16, %s\n", asm_name( imp_name ) ); + output( "\tadd x16, x16, #:lo12:%s\n", asm_name( imp_name ) ); output( "\tbr x16\n" ); if (is_delay) { output( "\n\t.section .text$1\n" ); output( ".L__wine_delay_import:\n" ); - output( "\tadrp x16, %s\n", arm64_page( asm_name( imp_name ) ) ); - output( "\tadd x16, x16, #%s\n", arm64_pageoff( asm_name( imp_name ) ) ); + output( "\tadrp x16, %s\n", asm_name( imp_name ) ); + output( "\tadd x16, x16, #:lo12:%s\n", asm_name( imp_name ) ); output( "\tb %s\n", asm_name( delay_load ) ); } break; diff --git a/tools/winebuild/spec32.c b/tools/winebuild/spec32.c index e7d195d3081..7e41f2d5a3d 100644 --- a/tools/winebuild/spec32.c +++ b/tools/winebuild/spec32.c @@ -352,8 +352,8 @@ static void output_relay_debug( struct exports *exports ) output( "\tstp x8, x9, [SP,#-16]!\n" ); output( "\tmov w1, #%u\n", odp->u.func.args_str_offset << 16 ); if (i - exports->base) output( "\tadd w1, w1, #%u\n", i - exports->base ); - output( "\tadrp x0, %s\n", arm64_page(".L__wine_spec_relay_descr") ); - output( "\tadd x0, x0, #%s\n", arm64_pageoff(".L__wine_spec_relay_descr") ); + output( "\tadrp x0, .L__wine_spec_relay_descr\n" ); + output( "\tadd x0, x0, #:lo12:.L__wine_spec_relay_descr\n" ); output( "\tldr x3, [x0, #8]\n"); output( "\tblr x3\n"); output( "\tmov sp, x29\n" ); @@ -636,25 +636,8 @@ void output_module( DLLSPEC *spec ) output( "\t.skip %u\n", 65536 + page_size ); break; default: - switch (target.cpu) - { - case CPU_i386: - case CPU_x86_64: - output( "\n\t.section ".init","ax"\n" ); - output( "\tjmp 1f\n" ); - break; - case CPU_ARM: - output( "\n\t.section ".text","ax"\n" ); - output( "\tb 1f\n" ); - break; - case CPU_ARM64: - output( "\n\t.section ".init","ax"\n" ); - output( "\tb 1f\n" ); - break; - case CPU_ARM64EC: - assert( 0 ); - break; - } + output( "\n\t.section ".init","ax"\n" ); + output( "\tjmp 1f\n" ); output( "__wine_spec_pe_header:\n" ); output( "\t.skip %u\n", 65536 + page_size ); output( "1:\n" ); diff --git a/tools/winebuild/utils.c b/tools/winebuild/utils.c index 258a644b494..62f05e535b6 100644 --- a/tools/winebuild/utils.c +++ b/tools/winebuild/utils.c @@ -823,15 +823,8 @@ const char *asm_name( const char *sym ) /* return the assembly name for an ARM64/ARM64EC function */ const char *arm64_name( const char *sym ) { - switch (target.platform) - { - case PLATFORM_MINGW: - case PLATFORM_WINDOWS: - if (target.cpu == CPU_ARM64EC) return strmake( ""#%s"", sym ); - /* fall through */ - default: - return asm_name( sym ); - } + if (target.cpu == CPU_ARM64EC) return strmake( ""#%s"", sym ); + return asm_name( sym ); }
/* return an assembly function declaration for a C function name */ @@ -967,16 +960,7 @@ void output_gnu_stack_note(void) case PLATFORM_APPLE: break; default: - switch (target.cpu) - { - case CPU_ARM: - case CPU_ARM64: - output( "\t.section .note.GNU-stack,"",%%progbits\n" ); - break; - default: - output( "\t.section .note.GNU-stack,"",@progbits\n" ); - break; - } + output( "\t.section .note.GNU-stack,"",@progbits\n" ); break; } } @@ -1067,35 +1051,3 @@ const char *get_asm_string_section(void) default: return ".section .rodata"; } } - -const char *arm64_page( const char *sym ) -{ - static char *buffer; - - switch (target.platform) - { - case PLATFORM_APPLE: - free( buffer ); - buffer = strmake( "%s@PAGE", sym ); - return buffer; - default: - return sym; - } -} - -const char *arm64_pageoff( const char *sym ) -{ - static char *buffer; - - free( buffer ); - switch (target.platform) - { - case PLATFORM_APPLE: - buffer = strmake( "%s@PAGEOFF", sym ); - break; - default: - buffer = strmake( ":lo12:%s", sym ); - break; - } - return buffer; -}