public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] Import liboffloadmic from upstream
@ 2015-08-31 14:03 Ilya Verbin
  2015-08-31 15:08 ` Jakub Jelinek
  0 siblings, 1 reply; 10+ messages in thread
From: Ilya Verbin @ 2015-08-31 14:03 UTC (permalink / raw)
  To: gcc-patches, Jakub Jelinek; +Cc: Kirill Yukhin

[-- Attachment #1: Type: text/plain, Size: 5631 bytes --]

Hi!

This patch contains an update for liboffloadmic, imported from
<https://openmprtl.org/download>, version 20150803.

Two major new features are:
1. Unloading of loaded images from target device.
2. Callback support for asynchronous execution.

make check passed. Is it ok for trunk?


liboffloadmic/
	* Makefile.am (liboffloadmic_host_la_DEPENDENCIES): Remove libcoi_host
	and libmyo-client.  liboffloadmic_host loads them dynamically.
	* Makefile.in: Regenerate.
	* doc/doxygen/header.tex: Merge from upstream, version 20150803
	<https://openmprtl.org/sites/default/files/liboffload_oss_20150803.tgz>.
	* runtime/cean_util.cpp: Likewise.
	* runtime/cean_util.h: Likewise.
	* runtime/coi/coi_client.cpp: Likewise.
	* runtime/coi/coi_client.h: Likewise.
	* runtime/coi/coi_server.cpp: Likewise.
	* runtime/coi/coi_server.h: Likewise.
	* runtime/compiler_if_host.cpp: Likewise.
	* runtime/compiler_if_host.h: Likewise.
	* runtime/compiler_if_target.cpp: Likewise.
	* runtime/compiler_if_target.h: Likewise.
	* runtime/dv_util.cpp: Likewise.
	* runtime/dv_util.h: Likewise.
	* runtime/liboffload_error.c: Likewise.
	* runtime/liboffload_error_codes.h: Likewise.
	* runtime/liboffload_msg.c: Likewise.
	* runtime/liboffload_msg.h: Likewise.
	* runtime/mic_lib.f90: Likewise.
	* runtime/offload.h: Likewise.
	* runtime/offload_common.cpp: Likewise.
	* runtime/offload_common.h: Likewise.
	* runtime/offload_engine.cpp: Likewise.
	* runtime/offload_engine.h: Likewise.
	* runtime/offload_env.cpp: Likewise.
	* runtime/offload_env.h: Likewise.
	* runtime/offload_host.cpp: Likewise.
	* runtime/offload_host.h: Likewise.
	* runtime/offload_iterator.h: Likewise.
	* runtime/offload_myo_host.cpp: Likewise.
	* runtime/offload_myo_host.h: Likewise.
	* runtime/offload_myo_target.cpp: Likewise.
	* runtime/offload_myo_target.h: Likewise.
	* runtime/offload_omp_host.cpp: Likewise.
	* runtime/offload_omp_target.cpp: Likewise.
	* runtime/offload_orsl.cpp: Likewise.
	* runtime/offload_orsl.h: Likewise.
	* runtime/offload_table.cpp: Likewise.
	* runtime/offload_table.h: Likewise.
	* runtime/offload_target.cpp: Likewise.
	* runtime/offload_target.h: Likewise.
	* runtime/offload_target_main.cpp: Likewise.
	* runtime/offload_timer.h: Likewise.
	* runtime/offload_timer_host.cpp: Likewise.
	* runtime/offload_timer_target.cpp: Likewise.
	* runtime/offload_trace.cpp: Likewise.
	* runtime/offload_trace.h: Likewise.
	* runtime/offload_util.cpp: Likewise.
	* runtime/offload_util.h: Likewise.
	* runtime/ofldbegin.cpp: Likewise.
	* runtime/ofldend.cpp: Likewise.
	* runtime/orsl-lite/include/orsl-lite.h: Likewise.
	* runtime/orsl-lite/lib/orsl-lite.c: Likewise.
	* runtime/use_mpss2.txt: Likewise.
	* include/coi/common/COIEngine_common.h: Merge from upstream, MPSS
	version 3.5
	<http://registrationcenter.intel.com/irc_nas/7445/mpss-src-3.5.tar>.
	* include/coi/common/COIEvent_common.h: Likewise.
	* include/coi/common/COIMacros_common.h: Likewise.
	* include/coi/common/COIPerf_common.h: Likewise.
	* include/coi/common/COIResult_common.h: Likewise.
	* include/coi/common/COISysInfo_common.h: Likewise.
	* include/coi/common/COITypes_common.h: Likewise.
	* include/coi/sink/COIBuffer_sink.h: Likewise.
	* include/coi/sink/COIPipeline_sink.h: Likewise.
	* include/coi/sink/COIProcess_sink.h: Likewise.
	* include/coi/source/COIBuffer_source.h: Likewise.
	* include/coi/source/COIEngine_source.h: Likewise.
	* include/coi/source/COIEvent_source.h: Likewise.
	* include/coi/source/COIPipeline_source.h: Likewise.
	* include/coi/source/COIProcess_source.h: Likewise.
	* include/myo/myo.h: Likewise.
	* include/myo/myoimpl.h: Likewise.
	* include/myo/myotypes.h: Likewise.
	* plugin/Makefile.am (myo_inc_dir): Remove.
	(libgomp_plugin_intelmic_la_CPPFLAGS): Do not define MYO_SUPPORT.
	(AM_CPPFLAGS): Likewise for offload_target_main.
	* plugin/Makefile.in: Regenerate.
	* runtime/emulator/coi_common.h: Update copyright years.
	(OFFLOAD_EMUL_KNC_NUM_ENV): Replace with ...
	(OFFLOAD_EMUL_NUM_ENV): ... this.
	(enum cmd_t): Add CMD_CLOSE_LIBRARY.
	* runtime/emulator/coi_device.cpp: Update copyright years.
	(COIProcessWaitForShutdown): Add space between string constants.
	Return handle to host in CMD_OPEN_LIBRARY.
	Support CMD_CLOSE_LIBRARY.
	* runtime/emulator/coi_device.h: Update copyright years.
	* runtime/emulator/coi_host.cpp: Update copyright years.
	(knc_engines_num): Replace with ...
	(num_engines): ... this.
	(init): Replace OFFLOAD_EMUL_KNC_NUM_ENV with OFFLOAD_EMUL_NUM_ENV.
	(COIEngineGetCount): Replace COI_ISA_KNC with COI_ISA_MIC, and
	knc_engines_num with num_engines.
	(COIEngineGetHandle): Likewise.
	(COIProcessCreateFromMemory): Add space between string constants.
	(COIProcessCreateFromFile): New function.
	(COIProcessLoadLibraryFromMemory): Rename arguments according to
	COIProcess_source.h.  Return handle, received from target.
	(COIProcessUnloadLibrary): New function.
	(COIPipelineClearCPUMask): New function.
	(COIPipelineSetCPUMask): New function.
	(COIEngineGetInfo): New function.
	* runtime/emulator/coi_host.h: Update copyright years.
	* runtime/emulator/coi_version_asm.h: Regenerate.
	* runtime/emulator/coi_version_linker_script.map: Regenerate.
	* runtime/emulator/myo_client.cpp: Update copyright years.
	* runtime/emulator/myo_service.cpp: Update copyright years.
	(myoArenaRelease): New function.
	(myoArenaAcquire): New function.
	(myoArenaAlignedFree): New function.
	(myoArenaAlignedMalloc): New function.
	* runtime/emulator/myo_service.h: Update copyright years.
	* runtime/emulator/myo_version_asm.h: Regenerate.
	* runtime/emulator/myo_version_linker_script.map: Regenerate.


  -- Ilya

[-- Attachment #2: liboffloadmic.tar.bz2 --]
[-- Type: application/x-bzip2, Size: 86450 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Import liboffloadmic from upstream
  2015-08-31 14:03 [PATCH] Import liboffloadmic from upstream Ilya Verbin
@ 2015-08-31 15:08 ` Jakub Jelinek
  2015-08-31 18:07   ` Ilya Verbin
  0 siblings, 1 reply; 10+ messages in thread
From: Jakub Jelinek @ 2015-08-31 15:08 UTC (permalink / raw)
  To: Ilya Verbin, Dodji Seketeli; +Cc: gcc-patches, Kirill Yukhin

On Mon, Aug 31, 2015 at 04:23:49PM +0300, Ilya Verbin wrote:
> Hi!
> 
> This patch contains an update for liboffloadmic, imported from
> <https://openmprtl.org/download>, version 20150803.
> 
> Two major new features are:
> 1. Unloading of loaded images from target device.
> 2. Callback support for asynchronous execution.
> 
> make check passed. Is it ok for trunk?

1) Is the library backwards ABI compatible?  Can you run e.g.
   libabigail abidiff in between the unpatched and patched version?
2) the *.map changes look wrong, when adding symbols to a symbol versioned
   shared library, new symbols shouldn't be added to existing symbol
   version, but to a new symbol version (so e.g. MYO_1.0.1 (or MYO_1.1)
   and COI_1.0.1 (or COI_1.1))

> liboffloadmic/
> 	* Makefile.am (liboffloadmic_host_la_DEPENDENCIES): Remove libcoi_host
> 	and libmyo-client.  liboffloadmic_host loads them dynamically.
> 	* Makefile.in: Regenerate.
> 	* doc/doxygen/header.tex: Merge from upstream, version 20150803
> 	<https://openmprtl.org/sites/default/files/liboffload_oss_20150803.tgz>.
> 	* runtime/cean_util.cpp: Likewise.
> 	* runtime/cean_util.h: Likewise.
> 	* runtime/coi/coi_client.cpp: Likewise.
> 	* runtime/coi/coi_client.h: Likewise.
> 	* runtime/coi/coi_server.cpp: Likewise.
> 	* runtime/coi/coi_server.h: Likewise.
> 	* runtime/compiler_if_host.cpp: Likewise.
> 	* runtime/compiler_if_host.h: Likewise.
> 	* runtime/compiler_if_target.cpp: Likewise.
> 	* runtime/compiler_if_target.h: Likewise.
> 	* runtime/dv_util.cpp: Likewise.
> 	* runtime/dv_util.h: Likewise.
> 	* runtime/liboffload_error.c: Likewise.
> 	* runtime/liboffload_error_codes.h: Likewise.
> 	* runtime/liboffload_msg.c: Likewise.
> 	* runtime/liboffload_msg.h: Likewise.
> 	* runtime/mic_lib.f90: Likewise.
> 	* runtime/offload.h: Likewise.
> 	* runtime/offload_common.cpp: Likewise.
> 	* runtime/offload_common.h: Likewise.
> 	* runtime/offload_engine.cpp: Likewise.
> 	* runtime/offload_engine.h: Likewise.
> 	* runtime/offload_env.cpp: Likewise.
> 	* runtime/offload_env.h: Likewise.
> 	* runtime/offload_host.cpp: Likewise.
> 	* runtime/offload_host.h: Likewise.
> 	* runtime/offload_iterator.h: Likewise.
> 	* runtime/offload_myo_host.cpp: Likewise.
> 	* runtime/offload_myo_host.h: Likewise.
> 	* runtime/offload_myo_target.cpp: Likewise.
> 	* runtime/offload_myo_target.h: Likewise.
> 	* runtime/offload_omp_host.cpp: Likewise.
> 	* runtime/offload_omp_target.cpp: Likewise.
> 	* runtime/offload_orsl.cpp: Likewise.
> 	* runtime/offload_orsl.h: Likewise.
> 	* runtime/offload_table.cpp: Likewise.
> 	* runtime/offload_table.h: Likewise.
> 	* runtime/offload_target.cpp: Likewise.
> 	* runtime/offload_target.h: Likewise.
> 	* runtime/offload_target_main.cpp: Likewise.
> 	* runtime/offload_timer.h: Likewise.
> 	* runtime/offload_timer_host.cpp: Likewise.
> 	* runtime/offload_timer_target.cpp: Likewise.
> 	* runtime/offload_trace.cpp: Likewise.
> 	* runtime/offload_trace.h: Likewise.
> 	* runtime/offload_util.cpp: Likewise.
> 	* runtime/offload_util.h: Likewise.
> 	* runtime/ofldbegin.cpp: Likewise.
> 	* runtime/ofldend.cpp: Likewise.
> 	* runtime/orsl-lite/include/orsl-lite.h: Likewise.
> 	* runtime/orsl-lite/lib/orsl-lite.c: Likewise.
> 	* runtime/use_mpss2.txt: Likewise.
> 	* include/coi/common/COIEngine_common.h: Merge from upstream, MPSS
> 	version 3.5
> 	<http://registrationcenter.intel.com/irc_nas/7445/mpss-src-3.5.tar>.
> 	* include/coi/common/COIEvent_common.h: Likewise.
> 	* include/coi/common/COIMacros_common.h: Likewise.
> 	* include/coi/common/COIPerf_common.h: Likewise.
> 	* include/coi/common/COIResult_common.h: Likewise.
> 	* include/coi/common/COISysInfo_common.h: Likewise.
> 	* include/coi/common/COITypes_common.h: Likewise.
> 	* include/coi/sink/COIBuffer_sink.h: Likewise.
> 	* include/coi/sink/COIPipeline_sink.h: Likewise.
> 	* include/coi/sink/COIProcess_sink.h: Likewise.
> 	* include/coi/source/COIBuffer_source.h: Likewise.
> 	* include/coi/source/COIEngine_source.h: Likewise.
> 	* include/coi/source/COIEvent_source.h: Likewise.
> 	* include/coi/source/COIPipeline_source.h: Likewise.
> 	* include/coi/source/COIProcess_source.h: Likewise.
> 	* include/myo/myo.h: Likewise.
> 	* include/myo/myoimpl.h: Likewise.
> 	* include/myo/myotypes.h: Likewise.
> 	* plugin/Makefile.am (myo_inc_dir): Remove.
> 	(libgomp_plugin_intelmic_la_CPPFLAGS): Do not define MYO_SUPPORT.
> 	(AM_CPPFLAGS): Likewise for offload_target_main.
> 	* plugin/Makefile.in: Regenerate.
> 	* runtime/emulator/coi_common.h: Update copyright years.
> 	(OFFLOAD_EMUL_KNC_NUM_ENV): Replace with ...
> 	(OFFLOAD_EMUL_NUM_ENV): ... this.
> 	(enum cmd_t): Add CMD_CLOSE_LIBRARY.
> 	* runtime/emulator/coi_device.cpp: Update copyright years.
> 	(COIProcessWaitForShutdown): Add space between string constants.
> 	Return handle to host in CMD_OPEN_LIBRARY.
> 	Support CMD_CLOSE_LIBRARY.
> 	* runtime/emulator/coi_device.h: Update copyright years.
> 	* runtime/emulator/coi_host.cpp: Update copyright years.
> 	(knc_engines_num): Replace with ...
> 	(num_engines): ... this.
> 	(init): Replace OFFLOAD_EMUL_KNC_NUM_ENV with OFFLOAD_EMUL_NUM_ENV.
> 	(COIEngineGetCount): Replace COI_ISA_KNC with COI_ISA_MIC, and
> 	knc_engines_num with num_engines.
> 	(COIEngineGetHandle): Likewise.
> 	(COIProcessCreateFromMemory): Add space between string constants.
> 	(COIProcessCreateFromFile): New function.
> 	(COIProcessLoadLibraryFromMemory): Rename arguments according to
> 	COIProcess_source.h.  Return handle, received from target.
> 	(COIProcessUnloadLibrary): New function.
> 	(COIPipelineClearCPUMask): New function.
> 	(COIPipelineSetCPUMask): New function.
> 	(COIEngineGetInfo): New function.
> 	* runtime/emulator/coi_host.h: Update copyright years.
> 	* runtime/emulator/coi_version_asm.h: Regenerate.
> 	* runtime/emulator/coi_version_linker_script.map: Regenerate.
> 	* runtime/emulator/myo_client.cpp: Update copyright years.
> 	* runtime/emulator/myo_service.cpp: Update copyright years.
> 	(myoArenaRelease): New function.
> 	(myoArenaAcquire): New function.
> 	(myoArenaAlignedFree): New function.
> 	(myoArenaAlignedMalloc): New function.
> 	* runtime/emulator/myo_service.h: Update copyright years.
> 	* runtime/emulator/myo_version_asm.h: Regenerate.
> 	* runtime/emulator/myo_version_linker_script.map: Regenerate.

	Jakub

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Import liboffloadmic from upstream
  2015-08-31 15:08 ` Jakub Jelinek
@ 2015-08-31 18:07   ` Ilya Verbin
  2015-08-31 18:08     ` Jakub Jelinek
                       ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Ilya Verbin @ 2015-08-31 18:07 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Dodji Seketeli, gcc-patches, Kirill Yukhin

On Mon, Aug 31, 2015 at 16:49:53 +0200, Jakub Jelinek wrote:
> 1) Is the library backwards ABI compatible?  Can you run e.g.
>    libabigail abidiff in between the unpatched and patched version?

It should be in theory, and I've successfully tested an old binary with old
libgomp plugin and with new liboffloadmic.  However, `abidiff --changed-fns
old/liboffloadmic_host.so new/liboffloadmic_host.so` prints:

Functions changes summary: 0 Removed (82 filtered out), 7 Changed (21 filtered out), 0 Added functions (1081 filtered out)
Variables changes summary: 0 Removed (25 filtered out), 1 Changed, 0 Added variables (7 filtered out)
Function symbols changes summary: 7 Removed, 76 Added function symbols not referenced by debug info
Variable symbols changes summary: 22 Removed, 4 Added variable symbols not referenced by debug info

7 functions with some indirect sub-type change:

/* Unused functions skipped.  */

  [C]'function int __offload_offload(OFFLOAD, const char*, int, int, VarDesc*, VarDesc2*, int, int)' has some indirect sub-type changes:
    parameter 1 of type 'typedef OFFLOAD' has sub-type changes:
      underlying type 'OffloadDescriptor*' changed:
        in pointed to type 'struct OffloadDescriptor':
          type size changed from 2240 to 2368 bits
          9 data member insertions:
	    /* ...  */

  [C]'function void __offload_register_image()' has some indirect sub-type changes:
    return type changed:
      type name changed from 'void' to 'bool'
      type size changed from 0 to 8 bits

abidiff: ../../src/abg-comparison.cc:10731: virtual void abigail::comparison::fn_parm_diff::report(std::ostream&, const string&) const: Assertion `get_type_diff() && get_type_diff()->to_be_reported()' failed.
Aborted (core dumped)

> 2) the *.map changes look wrong, when adding symbols to a symbol versioned
>    shared library, new symbols shouldn't be added to existing symbol
>    version, but to a new symbol version (so e.g. MYO_1.0.1 (or MYO_1.1)
>    and COI_1.0.1 (or COI_1.1))

I agree, but this is what I can't change - these files are copied from real COI/
MYO libraries, therefore the emulator (fake COI/MYO libs) must have the same
versions as the real libs.

  -- Ilya

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Import liboffloadmic from upstream
  2015-08-31 18:07   ` Ilya Verbin
@ 2015-08-31 18:08     ` Jakub Jelinek
  2015-09-08 13:41       ` Ilya Verbin
  2015-08-31 19:08     ` Jakub Jelinek
  2015-09-01  7:58     ` Dodji Seketeli
  2 siblings, 1 reply; 10+ messages in thread
From: Jakub Jelinek @ 2015-08-31 18:08 UTC (permalink / raw)
  To: Ilya Verbin; +Cc: Dodji Seketeli, gcc-patches, Kirill Yukhin

On Mon, Aug 31, 2015 at 08:56:58PM +0300, Ilya Verbin wrote:
> On Mon, Aug 31, 2015 at 16:49:53 +0200, Jakub Jelinek wrote:
> > 1) Is the library backwards ABI compatible?  Can you run e.g.
> >    libabigail abidiff in between the unpatched and patched version?
> 
> It should be in theory, and I've successfully tested an old binary with old
> libgomp plugin and with new liboffloadmic.  However, `abidiff --changed-fns
> old/liboffloadmic_host.so new/liboffloadmic_host.so` prints:
> 
> Functions changes summary: 0 Removed (82 filtered out), 7 Changed (21 filtered out), 0 Added functions (1081 filtered out)
> Variables changes summary: 0 Removed (25 filtered out), 1 Changed, 0 Added variables (7 filtered out)
> Function symbols changes summary: 7 Removed, 76 Added function symbols not referenced by debug info
> Variable symbols changes summary: 22 Removed, 4 Added variable symbols not referenced by debug info
> 
> 7 functions with some indirect sub-type change:
> 
> /* Unused functions skipped.  */
> 
>   [C]'function int __offload_offload(OFFLOAD, const char*, int, int, VarDesc*, VarDesc2*, int, int)' has some indirect sub-type changes:
>     parameter 1 of type 'typedef OFFLOAD' has sub-type changes:
>       underlying type 'OffloadDescriptor*' changed:
>         in pointed to type 'struct OffloadDescriptor':
>           type size changed from 2240 to 2368 bits
>           9 data member insertions:
> 	    /* ...  */
> 
>   [C]'function void __offload_register_image()' has some indirect sub-type changes:
>     return type changed:
>       type name changed from 'void' to 'bool'
>       type size changed from 0 to 8 bits

E.g. this is an ABI change, if e.g. anything in the plugin will call
__offload_register_image and check for return value (i.e. expect the new
versioN), but actually at runtime link against the old one, it will
misbehave.

> abidiff: ../../src/abg-comparison.cc:10731: virtual void abigail::comparison::fn_parm_diff::report(std::ostream&, const string&) const: Assertion `get_type_diff() && get_type_diff()->to_be_reported()' failed.
> Aborted (core dumped)
> 
> > 2) the *.map changes look wrong, when adding symbols to a symbol versioned
> >    shared library, new symbols shouldn't be added to existing symbol
> >    version, but to a new symbol version (so e.g. MYO_1.0.1 (or MYO_1.1)
> >    and COI_1.0.1 (or COI_1.1))
> 
> I agree, but this is what I can't change - these files are copied from real COI/
> MYO libraries, therefore the emulator (fake COI/MYO libs) must have the same
> versions as the real libs.

If that change is already cast into stone, there is nothing we can do, but
can you talk to the library maintainers that they add new symbols to
different symbol version next time at least?

	Jakub

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Import liboffloadmic from upstream
  2015-08-31 18:07   ` Ilya Verbin
  2015-08-31 18:08     ` Jakub Jelinek
@ 2015-08-31 19:08     ` Jakub Jelinek
  2015-09-01  7:58     ` Dodji Seketeli
  2 siblings, 0 replies; 10+ messages in thread
From: Jakub Jelinek @ 2015-08-31 19:08 UTC (permalink / raw)
  To: Ilya Verbin; +Cc: Dodji Seketeli, gcc-patches, Kirill Yukhin

On Mon, Aug 31, 2015 at 08:56:58PM +0300, Ilya Verbin wrote:
> abidiff: ../../src/abg-comparison.cc:10731: virtual void abigail::comparison::fn_parm_diff::report(std::ostream&, const string&) const: Assertion `get_type_diff() && get_type_diff()->to_be_reported()' failed.
> Aborted (core dumped)

Oh, and for this please get in touch with Dodji, if you are using latest
version, guess he'd be interested in a bugreport.

	Jakub

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Import liboffloadmic from upstream
  2015-08-31 18:07   ` Ilya Verbin
  2015-08-31 18:08     ` Jakub Jelinek
  2015-08-31 19:08     ` Jakub Jelinek
@ 2015-09-01  7:58     ` Dodji Seketeli
  2015-09-01 11:59       ` Ilya Verbin
  2 siblings, 1 reply; 10+ messages in thread
From: Dodji Seketeli @ 2015-09-01  7:58 UTC (permalink / raw)
  To: Ilya Verbin; +Cc: Jakub Jelinek, gcc-patches, Kirill Yukhin

Ilya Verbin <iverbin@gmail.com> writes:

(...)

> abidiff: ../../src/abg-comparison.cc:10731: virtual void abigail::comparison::fn_parm_diff::report(std::ostream&, const string&) const: Assertion `get_type_diff() && get_type_diff()->to_be_reported()' failed.
> Aborted (core dumped)

Woops.  can you send me the exact two libraries so that I can see what's
going wrong?  You can quickly file an issue to
https://sourceware.org/bugzilla/enter_bug.cgi?product=libabigail or just
send me the two binaries by email. I'll quickly look into this.

Sorry for the inconvenience.

Cheers,

-- 
		Dodji

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Import liboffloadmic from upstream
  2015-09-01  7:58     ` Dodji Seketeli
@ 2015-09-01 11:59       ` Ilya Verbin
  2015-09-02 13:44         ` Dodji Seketeli
  0 siblings, 1 reply; 10+ messages in thread
From: Ilya Verbin @ 2015-09-01 11:59 UTC (permalink / raw)
  To: Dodji Seketeli; +Cc: gcc-patches

On Tue, Sep 01, 2015 at 09:58:22 +0200, Dodji Seketeli wrote:
> Woops.  can you send me the exact two libraries so that I can see what's
> going wrong?  You can quickly file an issue to
> https://sourceware.org/bugzilla/enter_bug.cgi?product=libabigail or just
> send me the two binaries by email. I'll quickly look into this.

Done: https://sourceware.org/bugzilla/show_bug.cgi?id=18904

  -- Ilya

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Import liboffloadmic from upstream
  2015-09-01 11:59       ` Ilya Verbin
@ 2015-09-02 13:44         ` Dodji Seketeli
  0 siblings, 0 replies; 10+ messages in thread
From: Dodji Seketeli @ 2015-09-02 13:44 UTC (permalink / raw)
  To: Ilya Verbin; +Cc: gcc-patches, Jakub Jelinek

Ilya Verbin <iverbin@gmail.com> writes:

> On Tue, Sep 01, 2015 at 09:58:22 +0200, Dodji Seketeli wrote:
>> Woops.  can you send me the exact two libraries so that I can see what's
>> going wrong?  You can quickly file an issue to
>> https://sourceware.org/bugzilla/enter_bug.cgi?product=libabigail or just
>> send me the two binaries by email. I'll quickly look into this.
>
> Done: https://sourceware.org/bugzilla/show_bug.cgi?id=18904

Thanks!  I think I have fixed the fixed the issue.  Sorry for the
inconvenience.

The ABI changes of the library according to abidiff are:
http://paste.fedoraproject.org/262507/14412012

Cheers,

-- 
		Dodji

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Import liboffloadmic from upstream
  2015-08-31 18:08     ` Jakub Jelinek
@ 2015-09-08 13:41       ` Ilya Verbin
  2015-09-08 13:49         ` Jakub Jelinek
  0 siblings, 1 reply; 10+ messages in thread
From: Ilya Verbin @ 2015-09-08 13:41 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: gcc-patches, Kirill Yukhin

On Mon, Aug 31, 2015 at 20:07:49 +0200, Jakub Jelinek wrote:
> On Mon, Aug 31, 2015 at 08:56:58PM +0300, Ilya Verbin wrote:
> > On Mon, Aug 31, 2015 at 16:49:53 +0200, Jakub Jelinek wrote:
> > > 1) Is the library backwards ABI compatible?  Can you run e.g.
> > >    libabigail abidiff in between the unpatched and patched version?
> > 
> > It should be in theory, and I've successfully tested an old binary with old
> > libgomp plugin and with new liboffloadmic.  However, `abidiff --changed-fns
> > old/liboffloadmic_host.so new/liboffloadmic_host.so` prints:
> > 
> > Functions changes summary: 0 Removed (82 filtered out), 7 Changed (21 filtered out), 0 Added functions (1081 filtered out)
> > Variables changes summary: 0 Removed (25 filtered out), 1 Changed, 0 Added variables (7 filtered out)
> > Function symbols changes summary: 7 Removed, 76 Added function symbols not referenced by debug info
> > Variable symbols changes summary: 22 Removed, 4 Added variable symbols not referenced by debug info
> > 
> > 7 functions with some indirect sub-type change:
> > 
> > /* Unused functions skipped.  */
> > 
> >   [C]'function int __offload_offload(OFFLOAD, const char*, int, int, VarDesc*, VarDesc2*, int, int)' has some indirect sub-type changes:
> >     parameter 1 of type 'typedef OFFLOAD' has sub-type changes:
> >       underlying type 'OffloadDescriptor*' changed:
> >         in pointed to type 'struct OffloadDescriptor':
> >           type size changed from 2240 to 2368 bits
> >           9 data member insertions:
> > 	    /* ...  */
> > 
> >   [C]'function void __offload_register_image()' has some indirect sub-type changes:
> >     return type changed:
> >       type name changed from 'void' to 'bool'
> >       type size changed from 0 to 8 bits
> 
> E.g. this is an ABI change, if e.g. anything in the plugin will call
> __offload_register_image and check for return value (i.e. expect the new
> versioN), but actually at runtime link against the old one, it will
> misbehave.

Looks like this is the only incompatible change.  Given that the library is used
only by libgomp plugin, this isn't a big problem.  I will add a comment into
plugin prohibiting the use of the return value.  In fact, if something goes
wrong in __offload_register_image, it calls exit ().

> > > 2) the *.map changes look wrong, when adding symbols to a symbol versioned
> > >    shared library, new symbols shouldn't be added to existing symbol
> > >    version, but to a new symbol version (so e.g. MYO_1.0.1 (or MYO_1.1)
> > >    and COI_1.0.1 (or COI_1.1))
> > 
> > I agree, but this is what I can't change - these files are copied from real COI/
> > MYO libraries, therefore the emulator (fake COI/MYO libs) must have the same
> > versions as the real libs.
> 
> If that change is already cast into stone, there is nothing we can do, but
> can you talk to the library maintainers that they add new symbols to
> different symbol version next time at least?

Yes, I have told them.

So, is it OK for trunk?

  -- Ilya

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] Import liboffloadmic from upstream
  2015-09-08 13:41       ` Ilya Verbin
@ 2015-09-08 13:49         ` Jakub Jelinek
  0 siblings, 0 replies; 10+ messages in thread
From: Jakub Jelinek @ 2015-09-08 13:49 UTC (permalink / raw)
  To: Ilya Verbin; +Cc: gcc-patches, Kirill Yukhin

On Tue, Sep 08, 2015 at 04:40:22PM +0300, Ilya Verbin wrote:
> Looks like this is the only incompatible change.  Given that the library is used
> only by libgomp plugin, this isn't a big problem.  I will add a comment into
> plugin prohibiting the use of the return value.  In fact, if something goes
> wrong in __offload_register_image, it calls exit ().

Ack.

> > > > 2) the *.map changes look wrong, when adding symbols to a symbol versioned
> > > >    shared library, new symbols shouldn't be added to existing symbol
> > > >    version, but to a new symbol version (so e.g. MYO_1.0.1 (or MYO_1.1)
> > > >    and COI_1.0.1 (or COI_1.1))
> > > 
> > > I agree, but this is what I can't change - these files are copied from real COI/
> > > MYO libraries, therefore the emulator (fake COI/MYO libs) must have the same
> > > versions as the real libs.
> > 
> > If that change is already cast into stone, there is nothing we can do, but
> > can you talk to the library maintainers that they add new symbols to
> > different symbol version next time at least?
> 
> Yes, I have told them.
> 
> So, is it OK for trunk?

Ok.

	Jakub

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-09-08 13:43 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-31 14:03 [PATCH] Import liboffloadmic from upstream Ilya Verbin
2015-08-31 15:08 ` Jakub Jelinek
2015-08-31 18:07   ` Ilya Verbin
2015-08-31 18:08     ` Jakub Jelinek
2015-09-08 13:41       ` Ilya Verbin
2015-09-08 13:49         ` Jakub Jelinek
2015-08-31 19:08     ` Jakub Jelinek
2015-09-01  7:58     ` Dodji Seketeli
2015-09-01 11:59       ` Ilya Verbin
2015-09-02 13:44         ` Dodji Seketeli

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).