RFR: 8220784: hsdis cannot be built with MinGW64
David Holmes
david.holmes at oracle.com
Thu Mar 21 05:07:51 UTC 2019
On 21/03/2019 2:11 am, Ioi Lam wrote:
> That's the problem with ld and static libraries. If libbfd.a depends on
> libz.a, you must put libbfd.a before libz.a.
>
> Since this is a rarely touched Makefile, I think what you're doing in
> webrev.02 is fine. We can refactor it later if it becomes more unwieldy.
Okay I can live with webrev.02 as well.
Thanks,
David
-----
> Thanks
> - Ioi
>
> On 3/20/19 12:07 AM, Yasumasa Suenaga wrote:
>> Hi David,
>>
>> I tried to fix as you suggested, but it was failed.
>>
>> x86_64-w64-mingw32-gcc -o build/windows-amd64/hsdis-amd64.dll
>> -Ibuild/windows-amd64/include
>> -I/home/ysuenaga/rpmbuild/BUILD/binutils-2.31.1/include
>> -I/home/ysuenaga/rpmbuild/BUILD/binutils-2.31.1/bfd
>> -Ibuild/windows-amd64/bfd -DLIBARCH_amd64 -DLIBARCH=\"amd64\"
>> -DLIB_EXT=\".dll\" -O hsdis.c -shared build/windows-amd64/zlib/libz.a
>> build/windows-amd64/bfd/libbfd.a
>> build/windows-amd64/opcodes/libopcodes.a
>> build/windows-amd64/libiberty/libiberty.a
>> build/windows-amd64/bfd/libbfd.a(compress.o):compress.c:(.text+0x5b):
>> undefined reference to `inflateInit_'
>>
>> I tried to compile with moving libz.a to the last argument, it was
>> succeeded.
>>
>> x86_64-w64-mingw32-gcc -o build/windows-amd64/hsdis-amd64.dll
>> -Ibuild/windows-amd64/include
>> -I/home/ysuenaga/rpmbuild/BUILD/binutils-2.31.1/include
>> -I/home/ysuenaga/rpmbuild/BUILD/binutils-2.31.1/bfd
>> -Ibuild/windows-amd64/bfd -DLIBARCH_amd64 -DLIBARCH=\"amd64\"
>> -DLIB_EXT=\".dll\" -O hsdis.c -shared
>> build/windows-amd64/bfd/libbfd.a
>> build/windows-amd64/opcodes/libopcodes.a
>> build/windows-amd64/libiberty/libiberty.a
>> build/windows-amd64/zlib/libz.a
>>
>> I'm not unclear why it is failed.
>> But order of libraries seems to be important.
>>
>>
>> Yasumasa
>>
>>
>> 2019年3月20日(水) 15:18 David Holmes <david.holmes at oracle.com>:
>>> On 20/03/2019 4:03 pm, Yasumasa Suenaga wrote:
>>>> Hi David,
>>>>
>>>> 2019年3月20日(水) 14:25 David Holmes <david.holmes at oracle.com>:
>>>>> Hi Yasumasa,
>>>>>
>>>>> On 20/03/2019 3:01 pm, Yasumasa Suenaga wrote:
>>>>>> Thanks David!
>>>>>>
>>>>>> I uploaded new webrev.
>>>>>> This change affects Windows only, and I confirmed it works fine for
>>>>>> Linux x64 and MinGW64.
>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8220784/webrev.01/
>>>>> I this is for MINGW only then shouldn't the change be made within this
>>>>> section:
>>>> Did you say we should determine with $(MINGW) whether libz.a is added
>>>> to LDFLAGS?
>>>> webrev is here:
>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8220784/webrev.02/
>>>>
>>>> The code is added to outside of the section you pointed.
>>>>
>>>> $(LIBRARIES) is available after OS-specific code.
>>>> So we need to change like webrev.02 to minimize changes.
>>> Or you could add
>>>
>>> LIBRARIES = .../libzip.a
>>>
>>> inside the existing MINGW section and then change the external
>>>
>>> LIBRARIES = ...
>>>
>>> to
>>>
>>> LIBRARIES += ...
>>>
>>> I'm unclear whether MINGW is only an issue on Linux when building for
>>> Windows or whether also of use on Windows itself?
>>>
>>> David
>>>
>>>> Yasumasa
>>>>
>>>>
>>>>> ## OS = Linux ##
>>>>> ifeq ($(OS),Linux)
>>>>> ifneq ($(MINGW),)
>>>>> LIB_EXT = .dll
>>>>> CPPFLAGS += -I$(TARGET_DIR)/include
>>>>> LDFLAGS += -L$(TARGET_DIR)/lib
>>>>> OS=windows
>>>>> ifneq ($(findstring x86_64-,$(MINGW)),)
>>>>> ARCH=amd64
>>>>> else
>>>>> ARCH=i386
>>>>> endif
>>>>> CC = $(MINGW)-gcc
>>>>> CONFIGURE_ARGS= --host=$(MINGW) --target=$(MINGW)
>>>>> else #linux
>>>>> ?
>>>>>
>>>>> David
>>>>> -----
>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> Yasumasa
>>>>>>
>>>>>>
>>>>>> 2019年3月20日(水) 11:25 David Holmes <david.holmes at oracle.com>:
>>>>>>> On 20/03/2019 11:54 am, Yasumasa Suenaga wrote:
>>>>>>>> Hi David,
>>>>>>>>
>>>>>>>> 2019年3月20日(水) 10:38 David Holmes <david.holmes at oracle.com>:
>>>>>>>>> Hi Yasumasa,
>>>>>>>>>
>>>>>>>>> I'm not familar with building hsdis, but if the only currnet
>>>>>>>>> problem is
>>>>>>>>> on Windows, why is the fix not restricted to only building on
>>>>>>>>> Windows?
>>>>>>>> For Solaris and Linux, -lz is not added to LDFLAGS. I think it
>>>>>>>> means
>>>>>>>> initial committer want to use zlib in binutils.
>>>>>>>> And zlib in binutils will be built implicitly in build phase in
>>>>>>>> binutils.
>>>>>>>>
>>>>>>>>> Otherwise we need people who build hsdis on other platforms to
>>>>>>>>> comment
>>>>>>>>> on the appropriateness of the fix.
>>>>>>>> If using different zlib is used by platforms is allowed, I will
>>>>>>>> upload
>>>>>>>> webrev which affects Windows only.
>>>>>>>> What do you think?
>>>>>>> That seems preferable/simpler. Then you only need to know that your
>>>>>>> change works for non-MinGW64 environments.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> David
>>>>>>>
>>>>>>>> Thanks,
>>>>>>>>
>>>>>>>> Yasumasa
>>>>>>>>
>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> David
>>>>>>>>>
>>>>>>>>> On 20/03/2019 11:07 am, Yasumasa Suenaga wrote:
>>>>>>>>>> Hi Erik, David,
>>>>>>>>>>
>>>>>>>>>> I checked this change on Linux x64 and MinGW for Windows.
>>>>>>>>>> According to hsdis README, we need to use MinGW cross compiler to
>>>>>>>>>> build hsdis [1]. So I think Cygwin is not required.
>>>>>>>>>>
>>>>>>>>>> I do not have macOS and AIX. So I cannot check this change on
>>>>>>>>>> them.
>>>>>>>>>>
>>>>>>>>>> BTW is hsdis included Java SE spec?
>>>>>>>>>> hsdis seems not to be included jtreg tests, and it is not
>>>>>>>>>> contained in
>>>>>>>>>> OpenJDK binaries.
>>>>>>>>>> I think it is allowed even if we lack some test for hsdis if
>>>>>>>>>> hsdis is
>>>>>>>>>> not required for Java SE.
>>>>>>>>>> If not so, I want sponsor(s) for this change.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>>
>>>>>>>>>> Yasumasa
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> [1]
>>>>>>>>>> http://hg.openjdk.java.net/jdk/jdk/file/ddfb658c8ce3/src/utils/hsdis/README#l91
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 2019年3月20日(水) 6:54 David Holmes <david.holmes at oracle.com>:
>>>>>>>>>>> CC'ing hotspot-dev. I agree this needs to be checked on every
>>>>>>>>>>> platform
>>>>>>>>>>> affected. I can't comment on the fix itself.
>>>>>>>>>>>
>>>>>>>>>>> David
>>>>>>>>>>>
>>>>>>>>>>> On 20/03/2019 2:36 am, Erik Joelsson wrote:
>>>>>>>>>>>> I think this needs to be reviewed by at least someone in
>>>>>>>>>>>> hotspot who
>>>>>>>>>>>> regularly builds hsdis. I can't really comment on the
>>>>>>>>>>>> validity of the
>>>>>>>>>>>> patch as I'm unfamiliar with both hsdis as well as this
>>>>>>>>>>>> makefile. Have
>>>>>>>>>>>> you at least verified the build on all the platforms which
>>>>>>>>>>>> you affect
>>>>>>>>>>>> with this change (which would be at least Macos, AIX and
>>>>>>>>>>>> Windows in a
>>>>>>>>>>>> normal Cygwin VS env)?
>>>>>>>>>>>>
>>>>>>>>>>>> /Erik
>>>>>>>>>>>>
>>>>>>>>>>>> On 2019-03-18 17:56, Yasumasa Suenaga wrote:
>>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Please review this change:
>>>>>>>>>>>>>
>>>>>>>>>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8220784
>>>>>>>>>>>>> webrev:
>>>>>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8220784/webrev.00/
>>>>>>>>>>>>>
>>>>>>>>>>>>> I attempt to build hsdis for Windows on WSL Ubuntu 18.04 with
>>>>>>>>>>>>> gcc-mingw-w64-x86-64, but I saw error messages that some
>>>>>>>>>>>>> functions
>>>>>>>>>>>>> which are provided by zlib are unresolved.
>>>>>>>>>>>>> We need to link to zlib.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Yasumasa
>
More information about the build-dev
mailing list