diff --git a/lib/ff13/Source/ff.h b/lib/ff13/Source/ff.h
index 85beeb6defdcab82803558cdbdeee9f38ebbb122..7ee117b784a3a1f5e2d923a2b0a807011f7dd57a 100644
--- a/lib/ff13/Source/ff.h
+++ b/lib/ff13/Source/ff.h
@@ -311,10 +311,10 @@ void ff_memfree (void* mblock);			/* Free memory block */
 
 /* Sync functions */
 #if FF_FS_REENTRANT
-int ff_cre_syncobj (BYTE vol, FF_SYNC_t* sobj) __attribute__((weak));	/* Create a sync object */
-int ff_req_grant (FF_SYNC_t sobj) __attribute__((weak));		/* Lock sync object */
-void ff_rel_grant (FF_SYNC_t sobj) __attribute__((weak));		/* Unlock sync object */
-int ff_del_syncobj (FF_SYNC_t sobj) __attribute__((weak));	/* Delete a sync object */
+int ff_cre_syncobj (BYTE vol, FF_SYNC_t* sobj);	/* Create a sync object */
+int ff_req_grant (FF_SYNC_t sobj);		/* Lock sync object */
+void ff_rel_grant (FF_SYNC_t sobj);		/* Unlock sync object */
+int ff_del_syncobj (FF_SYNC_t sobj);	/* Delete a sync object */
 #endif
 
 
diff --git a/lib/ff13/Source/ffsystem.c b/lib/ff13/Source/ffsystem.c
index 7dfafc2196f3b0ed88b4b9ed77c1588d73e7d5d9..39b224d6e20b667993057dcfba9d18ef3caa89ea 100644
--- a/lib/ff13/Source/ffsystem.c
+++ b/lib/ff13/Source/ffsystem.c
@@ -53,7 +53,7 @@ void ff_memfree (
 
 static int s_notAMutex;
 
-int ff_cre_syncobj (	/* 1:Function succeeded, 0:Could not create the sync object */
+__attribute__((weak)) int ff_cre_syncobj (	/* 1:Function succeeded, 0:Could not create the sync object */
 	BYTE vol,			/* Corresponding volume (logical drive number) */
 	FF_SYNC_t *sobj		/* Pointer to return the created sync object */
 )
@@ -72,7 +72,7 @@ int ff_cre_syncobj (	/* 1:Function succeeded, 0:Could not create the sync object
 /  the f_mount() function fails with FR_INT_ERR.
 */
 
-int ff_del_syncobj (	/* 1:Function succeeded, 0:Could not delete due to an error */
+__attribute__((weak)) int ff_del_syncobj (	/* 1:Function succeeded, 0:Could not delete due to an error */
 	FF_SYNC_t sobj		/* Sync object tied to the logical drive to be deleted */
 )
 {
@@ -88,7 +88,7 @@ int ff_del_syncobj (	/* 1:Function succeeded, 0:Could not delete due to an error
 /  When a 0 is returned, the file function fails with FR_TIMEOUT.
 */
 
-int ff_req_grant (	/* 1:Got a grant to access the volume, 0:Could not get a grant */
+__attribute__((weak)) int ff_req_grant (	/* 1:Got a grant to access the volume, 0:Could not get a grant */
 	FF_SYNC_t sobj	/* Sync object to wait */
 )
 {
@@ -103,7 +103,7 @@ int ff_req_grant (	/* 1:Got a grant to access the volume, 0:Could not get a gran
 /* This function is called on leaving file functions to unlock the volume.
 */
 
-void ff_rel_grant (
+__attribute__((weak)) void ff_rel_grant (
 	FF_SYNC_t sobj	/* Sync object to be signaled */
 )
 {