diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index 39e84517a347f499d647e8d2e2f9fd31d3b8b1b8..20f576887129dbd40b47823d1ac9f03b73d0c1f1 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,7 +1,11 @@
 2019-09-10  Christophe Lyon  <christophe.lyon@st.com>
 
-        * configure.tgt: Handle *-*-uclinux*.
-        * configure: Regenerate.
+	* config/arm/sjlj.S (ldaddr): Add FDPIC support.
+
+2019-09-10  Christophe Lyon  <christophe.lyon@st.com>
+
+	* configure.tgt: Handle *-*-uclinux*.
+	* configure: Regenerate.
 
 2019-09-06  Florian Weimer  <fweimer@redhat.com>
 
diff --git a/libitm/config/arm/sjlj.S b/libitm/config/arm/sjlj.S
index a9abf160777a7c83595462696df0463710c8fa41..5d449645c4fdd803ed184352fc2e988e1be29322 100644
--- a/libitm/config/arm/sjlj.S
+++ b/libitm/config/arm/sjlj.S
@@ -49,7 +49,16 @@
 	.arch	armv7-m
 #endif
 
-#if defined(HAVE_MOVT) && defined(PIC)
+#if defined(__FDPIC__)
+.macro ldaddr reg, addr
+	ldr \reg, 99f
+	add \reg, \reg, r9
+.subsection 1
+	.align	2
+99:	.word	\addr(GOTOFF)
+.subsection 0
+.endm
+#elif defined(HAVE_MOVT) && defined(PIC)
 .macro ldaddr reg, addr
 	movw	\reg, #:lower16:(\addr - (98f + PC_OFS))
 	movt	\reg, #:upper16:(\addr - (98f + PC_OFS))