diff options
author | GHC GitLab CI <ghc-ci@gitlab-haskell.org> | 2022-01-20 13:53:16 -0500 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2022-04-06 15:18:26 -0400 |
commit | f601f00246ffe3e4fcd1fc333c1d41e0dc738fc1 (patch) | |
tree | fefce49cec01141f0e0648171efdbda4f4edd8cb | |
parent | 88d610317a707eb33fe8f1a1a8ab6456279861f2 (diff) | |
download | haskell-f601f00246ffe3e4fcd1fc333c1d41e0dc738fc1.tar.gz |
rts: Eliminate use of nested functions
This is a gcc-specific extension.
-rw-r--r-- | rts/linker/PEi386.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/rts/linker/PEi386.c b/rts/linker/PEi386.c index b0be4efad4..2a90779142 100644 --- a/rts/linker/PEi386.c +++ b/rts/linker/PEi386.c @@ -2179,6 +2179,17 @@ addCopySection (ObjectCode *oc, Section *s, SectionKind kind, * Debugging operations. */ +typedef struct _SymX { SymbolName* name; uintptr_t loc; } SymX; + +static int comp (const void * elem1, const void * elem2) +{ + SymX f = *((SymX*)elem1); + SymX s = *((SymX*)elem2); + if (f.loc > s.loc) return 1; + if (f.loc < s.loc) return -1; + return 0; +} + pathchar* resolveSymbolAddr_PEi386 (pathchar* buffer, int size, SymbolAddr* symbol, uintptr_t* top ){ @@ -2304,7 +2315,6 @@ resolveSymbolAddr_PEi386 (pathchar* buffer, int size, else if (obj) { /* Try to calculate from information inside the rts. */ - typedef struct _SymX { SymbolName* name; uintptr_t loc; } SymX; SymX* locs = stgCallocBytes (sizeof(SymX), obj->n_symbols, "resolveSymbolAddr"); int blanks = 0; @@ -2324,14 +2334,6 @@ resolveSymbolAddr_PEi386 (pathchar* buffer, int size, locs[i] = sx; } } - int comp (const void * elem1, const void * elem2) - { - SymX f = *((SymX*)elem1); - SymX s = *((SymX*)elem2); - if (f.loc > s.loc) return 1; - if (f.loc < s.loc) return -1; - return 0; - } qsort (locs, obj->n_symbols, sizeof (SymX), comp); uintptr_t key = (uintptr_t)symbol; SymX* res = NULL; |