From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com [IPv6:2a00:1450:4864:20::229]) by sourceware.org (Postfix) with ESMTPS id 0D4063858D35 for ; Tue, 26 Dec 2023 14:25:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0D4063858D35 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0D4063858D35 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::229 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1703600712; cv=none; b=HIzBUfdDIJCCvt/l+faQoTfKlrhQqwHT/l1Lvh8ntwanu0s2ANIa3UsTgqOJzMTjZZzuE/9eR9RrJTp/836bp8UnNUNmkWjHOT6bfHXvodnTYkBKGbmMsutTkXNCr7kHbjNzbmrN/Jv/jwaiBFllYv6OabZDnjZvg0z1rsWlJ38= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1703600712; c=relaxed/simple; bh=gp6G3Dz9TetzKxjZofta378nlmGiyManVOtITOjtGpM=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=S28q/YRmhu7QsdZwKY3Okj6W5q6VOoU+AO+vC6lkXCKGfnJOBA5fbGziCmlRW2y96qSOKZZeiD8aq+Jjcs99Hh292nWRnBchzlXjXx8uovdnWxjsqw3rO0OWQAkL2j/Mn8pTq5KbVdjXka2bDyV2rLQSOeUP+j/Goa7TzRTbDIk= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-lj1-x229.google.com with SMTP id 38308e7fff4ca-2ccc34a9f90so12330241fa.0 for ; Tue, 26 Dec 2023 06:25:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703600709; x=1704205509; darn=sourceware.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=Vb16S733DXSVKSi2G1mtC9U3CfO+6vE6BRfeCfI6Z94=; b=E9nR7JkYCSQPT+UBFTNirVUuSDgDyuhFkSVoxwRoH/FKYTozat6rz+T8uQeW6Js0wN BZJrVn6B44Au3G1GxLmrAGJESOZI0BfPI+/mRPguDb7UX0Ripa/g3Pu3UZFI49UDUaGE n8RzTfrXFg/accONESBGCePVmNqnWjoq2VDhQPrB3/ajkZWoheRp+v9gOQZ68rE1bzHk amuBLj/TDX1YvQxY/1tplN+Z/TUZrNV+8iXjG6RCKbxlCqiXP5VcvRdAcZ82lESsPjoo fPtrbKbm8RSW2YtInUlZcNo7tFq/RGXbfDPCIR0eRMa2Wlyjw0ObaGUDT/ihyUIS44lX eXvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703600709; x=1704205509; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Vb16S733DXSVKSi2G1mtC9U3CfO+6vE6BRfeCfI6Z94=; b=evP/+R9Lz8ZTlg4WhSOUQMyUEbeM/VB2Qnl0GYERlj2MEd4NIVCJU73pwN3uB7oWdp kt3DDASS+G905JGUPivgK3pVWl3OSMCgSttPye90isbLmkmEhc+MzfWWs0IEKXALJLBA MiRe7SK1geiZDt8ontfN5XC0h3iuMptkpHBDxZWcUpDZt7IhFW6ZPTYxIxH5FE/0xf0t /oM6+BtQNAqYU/0Mh/VbXbxuupyLn1StIhrP1qrvVZ6JVhpbQrBrctjsk2mNuSED6Wah SHP45z00uzhyWcT/Fg22zej1rh4wOCiqavjyAPopu7Gkqml1rCExM4ZqgVbWb/8VzGo6 NiuQ== X-Gm-Message-State: AOJu0YxxO+UwKFIhKnxFg0vWaXxc/ivpt7T2NdmaoDwyB1G1pA/yGMwn xBL6YlpW3u8eiUaMGJlchVM6+QFHiAB2Mi/NG3WA9SUhGk4= X-Google-Smtp-Source: AGHT+IFlcoG+/k56xvBx6xGUo4Prgt/W9FN6A6AzEVYHoQ08AnLSuD9MZ4AVz5ZhaJj1+kr28j4do2wjKU5r7ES+Sqs= X-Received: by 2002:a2e:7e06:0:b0:2cc:78bb:701e with SMTP id z6-20020a2e7e06000000b002cc78bb701emr2549611ljc.103.1703600709241; Tue, 26 Dec 2023 06:25:09 -0800 (PST) MIME-Version: 1.0 From: Oleg Tolmatcev Date: Tue, 26 Dec 2023 15:24:56 +0100 Message-ID: Subject: [PATCH] ld: fix 32-bit mingw DLL symbol export bug To: binutils@sourceware.org Content-Type: multipart/mixed; boundary="0000000000001d23b0060d6a7395" X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --0000000000001d23b0060d6a7395 Content-Type: text/plain; charset="UTF-8" Hello, I think there's a bug in ld on 32-bit Windows.Here is a tiny project for reproducing the problem. https://github.com/oltolm/ld-mingw32-bug A 32-bit DLL exports two stdcall functions "myfunc" and "myfunc64". The functions would normally get exported as "myfunc@0" and "myfunc64@0". The "DEF" file exports them as "myfunc" and "myfunc64" without the decorations. When you run the executable it shows an error message saying that it can not find "myfunc64". I think it happens because the sorting in ld is wrong. I think it should use the exported names "myfunc" and "myfunc64", but instead it uses the decorated names "myfunc@0" or "myfunc65@0". The ordering of functions in the DLL is different depending on which names you use. My patch changes ld to use undecorated exported names for sorting and it seems to fix the problem. When I execute ctest in my project, it runs successfully. --0000000000001d23b0060d6a7395 Content-Type: application/octet-stream; name="0001-ld-fix-32-bit-mingw-DLL-symbol-export-bug.patch" Content-Disposition: attachment; filename="0001-ld-fix-32-bit-mingw-DLL-symbol-export-bug.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lqmfhhjv0 RnJvbSBjNWZmY2RlMzI3N2UzYWVjNDhmMGYxZjI2ODlmZDYyOGIzOTcyZDJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBvbHRvbG0gPG9sZWcudG9sbWF0Y2V2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCAyNiBEZWMgMjAyMyAxNDo0MjozOSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIGxkOiBm aXggMzItYml0IG1pbmd3IERMTCBzeW1ib2wgZXhwb3J0IGJ1ZwoKU2lnbmVkLW9mZi1ieTogb2x0 b2xtIDxvbGVnLnRvbG1hdGNldkBnbWFpbC5jb20+Ci0tLQogbGQvZGVmZmlsZXAueSB8IDUgKyst LS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvbGQvZGVmZmlsZXAueSBiL2xkL2RlZmZpbGVwLnkKaW5kZXggMzNjOGNmMzVjNS4u NDVmOTAzMDZlMyAxMDA2NDQKLS0tIGEvbGQvZGVmZmlsZXAueQorKysgYi9sZC9kZWZmaWxlcC55 CkBAIC02MTAsMTIgKzYxMCwxMSBAQCBjbXBfZXhwb3J0X2VsZW0gKGNvbnN0IGRlZl9maWxlX2V4 cG9ydCAqZSwgY29uc3QgY2hhciAqZXhfbmFtZSwKIHsKICAgaW50IHI7CiAKLSAgaWYgKChyID0g YXJlX25hbWVzX2VxdWFsIChleF9uYW1lLCBlLT5uYW1lKSkgIT0gMCkKKyAgaWYgKChyID0gYXJl X25hbWVzX2VxdWFsIChpdHNfbmFtZSA/IGl0c19uYW1lIDogZXhfbmFtZSwKKwkJCSAgICBlLT5p dHNfbmFtZSA/IGUtPml0c19uYW1lIDogZS0+bmFtZSkpICE9IDApCiAgICAgcmV0dXJuIHI7CiAg IGlmICgociA9IGFyZV9uYW1lc19lcXVhbCAoaW5fbmFtZSwgZS0+aW50ZXJuYWxfbmFtZSkpICE9 IDApCiAgICAgcmV0dXJuIHI7Ci0gIGlmICgociA9IGFyZV9uYW1lc19lcXVhbCAoaXRzX25hbWUs IGUtPml0c19uYW1lKSkgIT0gMCkKLSAgICByZXR1cm4gcjsKICAgcmV0dXJuIChvcmQgLSBlLT5v cmRpbmFsKTsKIH0KIAotLSAKMi40My4wLndpbmRvd3MuMQoK --0000000000001d23b0060d6a7395--