Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[wasm] InvariantGlobalization=true no longer removes all icu references #49499

Closed
lewing opened this issue Mar 11, 2021 · 12 comments
Closed

[wasm] InvariantGlobalization=true no longer removes all icu references #49499

lewing opened this issue Mar 11, 2021 · 12 comments
Labels
arch-wasm WebAssembly architecture area-System.Globalization linkable-framework Issues associated with delivering a linker friendly framework

Comments

@lewing
Copy link
Member

lewing commented Mar 11, 2021

We're seeing failures in CI during runtime linking where the native linker considers the icu symbols still reachable when they shouldn't be. The native symbols are on the other side of a pinvoke are typically rooted by pinvoke-table.h which is generated as part of the runtime relinking by scanning the managed assemblies looking for attributes.

       foreach (var method in type.GetMethods(BindingFlags.DeclaredOnly|BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Static|BindingFlags.Instance)) {
            if ((method.Attributes & MethodAttributes.PinvokeImpl) != 0)
            {
                var dllimport = method.CustomAttributes.First(attr => attr.AttributeType.Name == "DllImportAttribute");
                var module = (string)dllimport.ConstructorArguments[0].Value!;
                var entrypoint = (string)dllimport.NamedArguments.First(arg => arg.MemberName == "EntryPoint").TypedValue.Value!;
                pinvokes.Add(new PInvoke(entrypoint, module, method));
            }

            foreach (CustomAttributeData cattr in CustomAttributeData.GetCustomAttributes(method))
            {
                try
                {
                    if (cattr.AttributeType.FullName == "System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute" ||
                        cattr.AttributeType.Name == "MonoPInvokeCallbackAttribute")
                        callbacks.Add(new PInvokeCallback(method));
                }
                catch
                {
                    // Assembly not found, ignore
                }
            } 
         }

Current theory is that the build is picking up the wrong header under as yet unknown conditions.

Aside from the above issue, any of the AOT tests using AggressiveTrimming should verify that those attributes are preserved.

@dotnet-issue-labeler dotnet-issue-labeler bot added area-System.Globalization untriaged New issue has not been triaged by the area owner labels Mar 11, 2021
@ghost
Copy link

ghost commented Mar 11, 2021

Tagging subscribers to this area: @tarekgh, @safern
See info in area-owners.md if you want to be subscribed.

Issue Details

We're seeing failures in CI during runtime linking where the linker considers the icu symbols still reachable when they shouldn't be. We need to figure out how this is happening.

Author: lewing
Assignees: -
Labels:

area-System.Globalization, untriaged

Milestone: -

@safern safern added the arch-wasm WebAssembly architecture label Mar 11, 2021
@ghost
Copy link

ghost commented Mar 11, 2021

Tagging subscribers to 'arch-wasm': @lewing
See info in area-owners.md if you want to be subscribed.

Issue Details

We're seeing failures in CI during runtime linking where the linker considers the icu symbols still reachable when they shouldn't be. We need to figure out how this is happening.

Author: lewing
Assignees: -
Labels:

arch-wasm, area-System.Globalization, untriaged

Milestone: -

@safern safern removed the untriaged New issue has not been triaged by the area owner label Mar 11, 2021
@lewing
Copy link
Member Author

lewing commented Mar 11, 2021

Looks like this was in fact due to some include path ordering this conclusion was only true for someone with local changes

@tarekgh tarekgh added the linkable-framework Issues associated with delivering a linker friendly framework label Mar 11, 2021
@ghost
Copy link

ghost commented Mar 11, 2021

Tagging subscribers to 'linkable-framework': @eerhardt, @vitek-karas, @LakshanF, @tannergooding, @sbomer
See info in area-owners.md if you want to be subscribed.

Issue Details

We're seeing failures in CI during runtime linking where the linker considers the icu symbols still reachable when they shouldn't be. We need to figure out how this is happening.

Author: lewing
Assignees: -
Labels:

arch-wasm, area-System.Globalization, linkable-framework

Milestone: -

@lewing
Copy link
Member Author

lewing commented Mar 11, 2021

@radical we should add symbol checks to the build tests so that we catch this case in a more specific way

@lewing
Copy link
Member Author

lewing commented Mar 12, 2021

Related discussion on #48847 (comment)

@lewing lewing changed the title [wasm] runtime build inconsistency when InvariantGlobalization=true [wasm] InvariantGlobalization=true no longer removes all icu references Mar 13, 2021
@lewing
Copy link
Member Author

lewing commented Mar 14, 2021

It looks like there were some overlapping causes here, but it was much less complicated than initially feared.

@tqiu8 can you add your findings around what happened with #47301 and the current state of things after #49412

@tqiu8
Copy link
Contributor

tqiu8 commented Mar 15, 2021

What caused the crash in #47301 was what we had originally expected:
The conditional in L676 in src/libaries/System.Private.Corelib/src/System/Globalization/CultureData.cs
if (GlobalizationMode.PredefinedCulturesOnly && !GlobalizationMode.Invariant)

was not able to be parsed by the linker, which led to the following line to be called: if (GlobalizationMode.UseNls ? !NlsIsEnsurePredefinedLocaleName(cultureName): !IcuIsEnsurePredefinedLocaleName(cultureName)), which does call into the ICU. Moving the invariant check outside into a nested If solves this problem; however, after #49412 many more methods were added that call into the ICU, causing Wasm.Build.Tests to break again with the following errors:

[stdout]   error: undefined symbol: u_charsToUChars (referenced by top-level compiled C/C++ code)
          [stdout]   warning: Link with `-s LLD_REPORT_UNDEFINED` to get more information on undefined symbols
          [stdout]   warning: To disable errors for undefined symbols use `-s ERROR_ON_UNDEFINED_SYMBOLS=0`
          [stdout]   warning: _u_charsToUChars may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: u_errorName (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _u_errorName may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: u_getVersion (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _u_getVersion may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: u_strlen (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _u_strlen may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: u_strncpy (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _u_strncpy may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: u_tolower (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _u_tolower may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: u_toupper (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _u_toupper may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucal_add (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucal_add may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucal_close (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucal_close may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucal_get (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucal_get may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucal_getAttribute (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucal_getAttribute may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucal_getKeywordValuesForLocale (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucal_getKeywordValuesForLocale may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucal_getTimeZoneDisplayName (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucal_getTimeZoneDisplayName may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucal_getTimeZoneIDForWindowsID (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucal_getTimeZoneIDForWindowsID may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucal_open (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucal_open may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucal_set (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucal_set may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucol_close (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucol_close may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucol_closeElements (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucol_closeElements may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucol_getOffset (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucol_getOffset may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucol_getRules (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucol_getRules may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucol_getSortKey (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucol_getSortKey may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucol_getStrength (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucol_getStrength may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucol_getVersion (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucol_getVersion may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucol_next (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucol_next may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucol_open (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucol_open may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucol_openElements (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucol_openElements may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucol_openRules (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucol_openRules may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucol_previous (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucol_previous may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucol_safeClone (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucol_safeClone may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucol_setAttribute (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucol_setAttribute may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucol_setMaxVariable (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucol_setMaxVariable may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucol_strcoll (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucol_strcoll may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucurr_forLocale (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucurr_forLocale may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ucurr_getName (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ucurr_getName may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: udat_close (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _udat_close may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: udat_countSymbols (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _udat_countSymbols may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: udat_getSymbols (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _udat_getSymbols may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: udat_open (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _udat_open may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: udat_setCalendar (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _udat_setCalendar may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: udat_toPattern (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _udat_toPattern may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: udata_setCommonData (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _udata_setCommonData may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: udatpg_close (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _udatpg_close may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: udatpg_getBestPattern (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _udatpg_getBestPattern may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: udatpg_open (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _udatpg_open may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uenum_close (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uenum_close may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uenum_count (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uenum_count may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uenum_next (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uenum_next may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uidna_close (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uidna_close may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uidna_nameToASCII (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uidna_nameToASCII may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uidna_nameToUnicode (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uidna_nameToUnicode may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uidna_openUTS46 (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uidna_openUTS46 may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uldn_close (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uldn_close may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uldn_keyValueDisplayName (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uldn_keyValueDisplayName may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uldn_open (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uldn_open may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_canonicalize (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_canonicalize may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_countAvailable (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_countAvailable may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_getAvailable (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_getAvailable may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_getBaseName (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_getBaseName may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_getCharacterOrientation (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_getCharacterOrientation may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_getCountry (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_getCountry may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_getDefault (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_getDefault may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_getDisplayCountry (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_getDisplayCountry may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_getDisplayLanguage (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_getDisplayLanguage may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_getDisplayName (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_getDisplayName may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_getISO3Country (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_getISO3Country may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_getISO3Language (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_getISO3Language may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_getKeywordValue (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_getKeywordValue may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_getLCID (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_getLCID may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_getLanguage (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_getLanguage may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_getName (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_getName may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_getParent (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_getParent may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: uloc_setKeywordValue (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _uloc_setKeywordValue may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ulocdata_getCLDRVersion (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ulocdata_getCLDRVersion may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ulocdata_getMeasurementSystem (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ulocdata_getMeasurementSystem may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: unorm2_getNFCInstance (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _unorm2_getNFCInstance may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: unorm2_getNFDInstance (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _unorm2_getNFDInstance may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: unorm2_getNFKCInstance (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _unorm2_getNFKCInstance may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: unorm2_getNFKDInstance (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _unorm2_getNFKDInstance may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: unorm2_isNormalized (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _unorm2_isNormalized may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: unorm2_normalize (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _unorm2_normalize may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: unum_close (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _unum_close may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: unum_getAttribute (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _unum_getAttribute may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: unum_getSymbol (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _unum_getSymbol may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: unum_open (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _unum_open may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: unum_toPattern (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _unum_toPattern may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ures_close (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ures_close may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ures_getByKey (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ures_getByKey may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ures_getSize (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ures_getSize may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ures_getStringByIndex (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ures_getStringByIndex may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: ures_open (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _ures_open may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: usearch_close (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _usearch_close may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: usearch_first (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _usearch_first may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: usearch_getMatchedLength (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _usearch_getMatchedLength may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: usearch_last (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _usearch_last may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: usearch_openFromCollator (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _usearch_openFromCollator may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: usearch_setPattern (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _usearch_setPattern may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   error: undefined symbol: usearch_setText (referenced by top-level compiled C/C++ code)
          [stdout]   warning: _usearch_setText may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
          [stdout]   Error: Aborting compilation due to previous errors

@tarekgh
Copy link
Member

tarekgh commented Mar 15, 2021

@tqiu8

after #49412 many more methods were added that call into the ICU, causing Wasm.Build.Tests to break again with the following errors:

This is not true. I added only two methods in this PR. The rest was there. Looks there is something more you need to investigate. The change I did in the icu shim is I added a parameter to one of the macros. I am not sure if this can make any difference.

@tqiu8
Copy link
Contributor

tqiu8 commented Mar 15, 2021

@tarekgh After looking over it again, it seems like the undefined symbols are the ones with the added parameter. I will try again from a clean build.

@eerhardt
Copy link
Member

@tqiu8 - are you working on this issue? If so, can it be assigned to you?

@lewing
Copy link
Member Author

lewing commented May 11, 2021

After #50266 (and others) this is resolved.

@lewing lewing closed this as completed May 11, 2021
@ghost ghost locked as resolved and limited conversation to collaborators Jun 10, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
arch-wasm WebAssembly architecture area-System.Globalization linkable-framework Issues associated with delivering a linker friendly framework
Projects
None yet
Development

No branches or pull requests

5 participants